怎么解决IE 9、 10checkbox的onchange事件跟ie8、7、6执行不一样
怎么解决IE9、10checkbox的onchange事件跟ie8、7、6执行不一样,。比如当选中的时候点击IE9/10就弹出未选中,8/7/6就弹出选中$(":chec...
怎么解决IE 9、 10checkbox的onchange事件跟ie8、7、6执行不一样,。比如当选中的时候点击IE9/10就弹出未选中,8/7/6就弹出选中
$(":checkbox", "tr:gt(0)").change(function () {
$(":checkbox", "tr:gt(0)").each(function () {
if ($(this).attr("checked") != "checked") {
$(":checkbox", "tr:first").removeAttr("checked");
return false; //跳出Each
}
$(":checkbox", "tr:first").attr("checked", "checked");
});
}); 展开
$(":checkbox", "tr:gt(0)").change(function () {
$(":checkbox", "tr:gt(0)").each(function () {
if ($(this).attr("checked") != "checked") {
$(":checkbox", "tr:first").removeAttr("checked");
return false; //跳出Each
}
$(":checkbox", "tr:first").attr("checked", "checked");
});
}); 展开
展开全部
IE 9 / 10 不会出现你说的那种情况,是你的代码存在问题。
IE 6 / 7 / 8 下 checkbox 不会触发 onchange 事件,不管选中还是未选中。
所以你应该使用 onclick。
<!-- IE 6/7/8 不会有反应,IE 9/10 正常 -->
<p>onchange <input type="checkbox" onchange="alert(this.checked)" /></p>
<!-- IE 6/7/8/9/10 正常 -->
<p>onclick <input type="checkbox" onclick="alert(this.checked)" /></p>
最好把你代码贴出来看一下。
追问
代码已经复制上去了, 你看一下,用Jq写的,我之前alert了一下值IE 6 7 8也能取到值啊
追答
检查一个 checkbox 是否为 checked,不应该使用 attr。因为如果 checkbox 只有属性没有只值,也代表 checked。
例如 ,此 checkbox 为 checked
如果你使用 attr("checked") != "checked" 就会出现错误,所以正确的检查方法是 is(":checked")
设置属性值的时候应该使用 【prop】 (jQuery 1.6+),把这段代码改为下面的就对了
$(":checkbox", "tr:gt(0)").change(function () {
$(":checkbox", "tr:gt(0)").each(function () {
if (!$(this).is(":checked")) {
$(":checkbox", "tr:first").prop("checked", false);
return false; //跳出Each
}
$(":checkbox", "tr:first").prop("checked", true);
});
});
还有一点,$(":checkbox", "tr:gt(0)") 这种写法效率低于 $("tr:gt(0)").find(":checkbox")
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询