有谁知道为什么这个代码在FF,Chrome和IE9中打印出来是真的,在IE 7-8中是假的?当然,如何使其保持一致。
$("#cb1").on("change", function(e) {
$("#value").text(e.target.checked);
});
$("#cb1").trigger("click");
,HTML是
<input type="checkbox" id="cb1" />
<div id="value"></div>
我还准备了jsfiddle。
答案 0 :(得分:0)
它在IE中返回false的原因是由于事件的时间/顺序。
在触发更改事件的IE中,尚未设置checked属性。
一旦该事件竞争,但它已被设置并且.checked将返回true。
我不相信这是实现这个问题的最好方法,但要回答你的问题......
根据您现有的包装实际设置的代码,setTimeout调用中的文本将延迟执行。
这意味着当代码执行此更改时甚至已经完成,将设置checked属性并且将看到“正确”/期望的行为。
我在这里更新了你的小提琴http://jsfiddle.net/WkGUr/16/
$("#cb1").on("change", function(e) {
setTimeout(function() {
$("#value").text(e.target.checked);
}, 0);
});
$("#cb1").trigger("click");