web-dev-qa-db-ja.com

ラジオボタンと.attr( 'checked'、 'checked')がIE7で機能しない

IE7で追加するときにラジオボタンをチェックする方法はありますか?

すべてのブラウザで機能しているように見えますが、IE6,7で機能しているようには見えません。なぜ機能しないのか、私にはまったくわかりません。

_var $itemVariantRowRadio = $("<input/>")
    .attr("type", "radio")
    .attr("name", "itemvariant")
    .addClass("itemvariant")
    .val('whatever');


    $itemVariantRowRadio.attr('checked', 'checked');
    $itemVariantRow.append($itemVariantRowRadio)
_

IE6/7でconsole.log($itemVariantRowRadio.attr('checked')を実行すると、TRUEに設定されていると表示されますが、ラジオが実際にチェックされないか、チェック済みとしてピックアップされません。

悪夢!他の誰かがこれに遭遇し、何らかの修正をしていますか?

15
Intellix

JQuery> = 1.6の場合:

次のようにpropを使用します: 。prop()vs .attr()

$itemVariantRowRadio.prop('checked', true);

JQuery <1.6の場合:

$itemVariantRowRadio.attr('checked', true);

また:

次のように要素を作成してみてください:

var $itemVariantRowRadio = $("<input/>",{
     type: 'radio',
     name: 'itemvariant',
     class: 'itemvariant',
     checked: true,
     value: 'whatever'
});
$itemVariantRow.append($itemVariantRowRadio);

フィドルを参照してください: http://jsfiddle.net/maniator/6CDf3/
2つの入力が追加された例: http://jsfiddle.net/maniator/6CDf3/2/

36
Neal

試してください:$itemVariantRowRadio.not(':checked').click().change();

したがって、実際には、ユーザーがマウスで操作するのと同じように、チェックボックスをクリックします。 not(':checked')は、以前にチェックされていないことを確認します。そして、jQueryクリックはそれだけではそれを行わないので、後でchangeイベントをトリガーします。

4
sod

MSIEでは、一度作成したtype要素のinputを変更することはできません。

http://bugs.jquery.com/ticket/1536 および http://api.jquery.com/jQuery/#jQuery2 を参照してください

作成するだけです:

$('<input type="radio">')
2
Alnitak

Domに追加した後でchecked属性を適用する場合、クリックイベントをトリガーする必要はありません。 http://jsfiddle.net/XjHUe/2/

<div id='content'></div>
var $itemVariantRowRadio = $("<input/>")
    .attr("type", "radio")
    .attr("name", "itemvariant")
    .addClass("itemvariant")
    .val('whatever');
//$itemVariantRowRadio.attr("checked", true);
$("#content").append($itemVariantRowRadio);
$(".itemvariant").attr('checked',true);

var val = $(".itemvariant").attr("checked");
alert(val);
0
scrappedcola