jQueryのattrメソッドとpropメソッド

jQueryデザイン入門の読者の方から、書籍中の jQueryのattrメソッドの使い方(P281)が間違っているのでは?とご質問をいただいたので解説をします。

jQueryではバージョンによって挙動が変わったメソッドが幾つかあり、attrメソッドはその一つです。(変わったといっても少しだけですが)

attrメソッドでチェックボックスの値を取得しようとした場合、次のような変更がありました。

<input type="checkbox" name="01" checked="checked">
<input type="checkbox" name="02">
$("input").each(function(){
    alert($(this).attr("checked"))
});

上記のコードをjQuery1.5.2 で実行した場合、name「01」は「true」をname「02」は「false」を返します。(書籍でもこのように解説しています)

ただし、jQuery1.6から仕様が変更されており、name「01」は「checked」をname「02」は「undefined」を返します。

代わりにpropメソッドが新たに追加されており、propメソッドではname「01」は「true」をname「02」は「false」を返します。

$("input").each(function(){
    alert($(this).prop("checked"))
});

というわけでjQuery1.6以上でP281のサンプルを利用する場合はpropメソッドに変更して利用してください。

スポンサードリンク

«スマートフォンサイト制作実践講座を行ないます。 | メイン | Amazonの2012年 上半期Booksランキング(コンピュータ書籍)で14位になりました。»