怎么解决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");
});
});
展开
 我来答
马后雷鼓下扬州5058
2013-05-20 · TA获得超过4321个赞
知道小有建树答主
回答量:693
采纳率:33%
帮助的人:795万
展开全部

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")
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式