我可以将行为简化为最简单的情况(在最新的 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 中仍然存在这样一个简单的错误,也就是大约 4 个月前......对于如此明显的错误?
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