有谁知道为什么这段代码在 FF、Chrome 和 IE9 中打印 true,而在 IE 7-8 中打印 false?当然还有如何使其一致。
$("#cb1").on("change", function(e) {
$("#value").text(e.target.checked);
});
$("#cb1").trigger("click");
HTML 是
<input type="checkbox" id="cb1" />
<div id="value"></div>
我还准备了一个jsfiddle .
最佳答案
它在 IE 中返回 false 的原因是由于事件的时间/顺序。
在IE中,当change事件被触发时,checked属性还没有被设置。
一旦该事件竞争,无论其已设置,.checked 将返回 true。
我不认为这是实现这一点的最佳方式,但回答你的问题......
根据包装实际设置的现有代码,setTimeout 调用中的文本将延迟其执行。
这意味着当代码执行此更改时,甚至已经完成,将设置选中的属性,并且将看到“正确”/所需的行为。
我在这里更新了你的 fiddle http://jsfiddle.net/WkGUr/16/
$("#cb1").on("change", function(e) {
setTimeout(function() {
$("#value").text(e.target.checked);
}, 0);
});
$("#cb1").trigger("click");
关于javascript - 检查更改事件内的值 IE 7-8 与其他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13829771/