有人知道为什么这段代码在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。
发布于 2012-12-12 07:57:50
它在IE中返回false的原因是由于事件的时间/顺序。
在IE中,当change事件被触发时,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");https://stackoverflow.com/questions/13829771
复制相似问题