具体来说,输入类型复选框的内存 dom 不会在 FireFox 中接收“checked”属性(或任何其他选中指示符)。
注释行可以取消注释以查看测试通过,但目前您将在 Firefox 中看到测试失败。
var cb = $('<input type="checkbox" />')
//var cb = $('input');
if (cb.is(':checked')) alert("checkbox says it's already checked");
cb.click();
if (cb.is(':checked')) alert("checkbox clicked correctly!");
else alert("fail!");
我是否在做不标准的事情?有什么建议吗?我基本上依赖 jQuery .click 来实际检查 UI 中的复选框(并且我不想使用 .attr、.prop、.val,因为它会破坏我正在进行的良好封装。)
最佳答案
由于您使用的是 jQuery 1.4.3,看起来您最好的选择是:
cb[0].setAttribute('checked', 'checked'); // plain old vanilla JS
<强> jsFiddle Demo - 在 FireFox、Chrome 和 IE8 中测试
.click()
在 Firefox 中的许多奇怪情况下不起作用(这在该浏览器中本质上是错误/不同的)。我想是因为它实际上在 DOM 上还不可用,所以它不知道这个事件在哪里。这是 .prop()
等事物存在的众多原因之一。
关于jQuery 单击复选框不会在 Firefox 中检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14463971/