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

标签 javascript jquery internet-explorer-8

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

相关文章:

javascript - rivets.js 和 [contenteditable]

javascript - IONIC 键盘隐藏输入焦点

javascript - 在 beforeSend 之后调用 JQuery Ajax 成功函数

javascript - HTML 允许用户在文件中键入或粘贴

javascript - IE8 - 输入键不会提交我的搜索字段

css - CSS 的嵌套选择器在 IE8 中不起作用但在 IE6 中起作用?

java - 如何显示html/rich格式的邮件?

javascript - 如何让Jquery可排序插件使用表格中的多行进行拖动

javascript - JQuery 验证 : how to place error messages inside the input's title attribute

javascript - 表单在 IE8 中滚出页面