检查内部更改事件IE 7-8与其他人的值

时间:2012-12-11 22:46:16

标签: javascript jquery internet-explorer-8

有谁知道为什么这个代码在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

1 个答案:

答案 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");