3


0

jQuery 1.6で起こりうるバグ-$(…​)。attr( "checked")が機能していません

フォームに2つのラジオボタンがあり、jQuery 1.6の使用を開始するまで、次のコードは正常に機能しました。

function testcheck()
{
    if (jQuery("#radio1").attr("checked"))
        alert("first button checked");
    else if (jQuery("#radio2").attr("checked"))
        alert("second button checked");
    else
        alert("none checked")
}

jQuery 1.6の使用を開始すると、「jQuery(radiobutton).attr( "checked")」は常に空であるため、常に「チェックなし」と表示されます。

このhttp://jsfiddle.net/8Eqpu/7/[jsfiddle]を見て、jQueryバージョンを1.5.2から1.6に変更して、意味を確認してください。

6 回答


8


この質問を見てください:https://stackoverflow.com/questions/5874652/prop-vs-attr [.prop()vs .attr()]

代わりにコードでこれを試してください:

function testcheck()
{
    if (jQuery("#radio1").prop("checked"))
        alert("first button checked");
    else if (jQuery("#radio2").prop("checked"))
        alert("second button checked");
    else
        alert("none checked")
}

また、最新のhttp://blog.jquery.com/2011/05/10/jquery-1-6-1-rc-1-released/[jQuery 1.6.1]では、1.6の `attr`問題の一部を修正しました


3


これはバグではなく変更です。

また、@ Nealが述べたように、最新のhttp://blog.jquery.com/2011/05/10/jquery-1-6-1-rc-1-released/[1.6。 1リリース候補]。

RCリンクから:

_ 1.5.2から1.6.1へのアップグレード-新しい.prop()メソッドの導入と.attr()メソッドの変更により、jQuery 1.6は属性とプロパティの違いと、それらがそれぞれにどのように関連するかについての議論を巻き起こしましたその他。 また、16.1で修正された下位互換性の問題もいくつかありました。 1.5.2から1.6.1に更新する場合、コードを変更する必要はありません。 _

そこにはもっと多くの説明がありますが、1.6.1にスキップして大丈夫かもしれません…​

編集-5/16/11に以下を追加

ジョン・レジグは、これとその理由について行われた変更について検討しました。 よく読んで…​


3


私もこれを見てきました。 他の答えには、これがなぜあるのか、いつ元に戻されるのかに関するいくつかの洞察があります(ゲッターのみ)?それまでの間、私は使用しています

$('#thingy').is(':checked');

クロスバージョンの回避策として。

お役に立てれば!


0


バージョン間の変更を説明することはできませんが、特にチェック対象を探しているセレクタがあります-http://api.jquery.com/checked-selector/


0


この方法でハックできます: jQuery(" input [name = 'test']:checked ")

デモ:


0


`.attr()`と `.data()`はjQuery 1.6で劇的に変更されました。

この記事で詳しく説明しています:

お役に立てれば。 乾杯