読者です 読者をやめる 読者になる 読者になる

jQuery 1.6のpropメソッド

1.6で prop というメソッドが出来たそうだよ。

John Resig - jQuery 1.6 and .attr()

英語よく分からんが、http://api.jquery.com/prop/ 等も読んでみると、どうやらこういう事らしい。たとえば

<input type="checkbox" id="a" checked="checked">

に対して

$("#a").attr("checked") 

という操作が可能だが、この操作で取得される値はなんだろうか? HTML属性値として checked という文字列が返るのか、DOMプロパティとして true という真偽値が得られるのか良く分からない。これを厳密にわけるため prop メソッドが追加された。

jQuery1.5以前では

$("#a").attr("checked") // => true

jQuery1.6では

$("#a").attr("checked") // => "checked"
$("#a").prop("checked") // => true

となる。propはDOMプロパティ、attrはHTML属性と使い分けできるようになった。

ただし、この変更によってjQuery 1.6からattrメソッドの挙動が変わってしまったので注意する必要があるようだ。フォームを操作するコードやプラグインがjQuery 1.6では動かなくなるかもしれない。

また、propによってHTML属性値として存在しないプロパティを取得・設定可能になったようだ。たとえばselectedIndex

$("#a").prop("selectedIndex");

フォーム周りの操作がちょっと楽になるかも

ついき

1.6.1でまた動作が変わり、attrでプロパティを操作できるように戻されたそうです。

http://ginpen.com/2011/05/20/jquery-1-6-1/