在IE8中查找复选框时,我的代码有什么区别

What is the differece between my codes when find checkbox in IE8?

本文关键字:代码 我的 什么 区别 IE8 查找 复选框      更新时间:2023-09-26

我有树类型的复选框,在我的网格中命名为checkAll,checkRow,checkCell类。当我单击checkAll复选框时,所有复选框都将被选中。当我单击checkRow复选框时,将选中此行中的复选框。 现在我使用相同的代码来创建checkAll,checkRow事件,我发现 checkAll事件效果很好,但checkRow事件是错误的。它说Jscript错误。我尝试使用 jQuery 方式更改它,它运行良好。在IE8中找到复选框时,我的代码之间有什么区别?

第一种方法:检查所有工作正常,检查行不起作用

$("#checkAll").on("click", function (e) {
    var target = $(e.target), item, checked = target.prop("checked"),
    checkboxes = $("#Grid input");
    checkboxes.each(function (i, v) {
        item = $(v);
        if(!item.prop("disabled"))
            item.prop("checked", checked);
    });
});
$("#Grid").on("click", ".checkRow", function (e) {
    var target = $(e.target), checked = target.prop("checked"),
    td = target.parent("td"), tr = td.parent("tr"),
    checkboxes = tr.find("input[class!='checkRow']");
    checkboxes.each(function (i, v) {
        item = $(v); //in this row Jscript error,wrong property in IE8,but firfox work well
        item.prop("checked", checked);
    });
});

检查行事件中的第二种方式,效果很好

$("#Grid").on("click", ".checkRow", function (e) {
    var target = $(e.target), checked = target.prop("checked"),
    td = target.parent("td"), tr = td.parent("tr"),
    checkboxes = tr.find("input[class!='checkRow']");
    checkboxes.prop("checked", checked);//work well
});

在第一种方式checkRow事件中,您的变量称为 item 不声明。所以火狐运行良好,但IE8不能工作。