動作を最も単純なケースに減らすことができます (最新の Chrome、Safari、Firefox、IE 9 および 10 でテスト済み (jsfiddle は IE 8 では動作しません)):
$("input").click(function (evt) {
console.log("click event handler invoked", evt);
console.log($("input").attr("checked"));
console.log($("input").prop("checked"));
console.log($("input").is(":checked"));
});
$("input").click();
HTMLで:
<input type="checkbox"></input>
出力は次のとおりです。
undefined
false
false
チェックボックスがチェックされていないことを報告する必要があるのは正しいはずですか?
それが正しければ、なぜ jQuery 1.9.1 で動作が完全に逆になるのでしょうか? http://jsfiddle.net/fjvqa/2
それが正しくない場合、2012 年 11 月 13 日にリリースされた jQuery 1.8.3 に、なぜこのような単純なバグがまだ残っているのでしょうか?
PS私は、(1)をattr()
使用prop()
すべきではなく、代わりに使用する必要があることを理解しています。何が起こっているのかを確認するためだけに印刷します。(2)ハンドラーは、 jQuery 1.8.3 を使用している場合change
のレポートとは逆の結果を実際に報告します: http://jsfiddle.net/fjvqa/3 jQuery 1.9.1 の場合、同じことを報告します: http://jsfiddle .net/fjvqa/4 私が探しているのは、起こるはずの実際の状況です。click