为什么这个切换复选框函数在jQuery 1.3.2中工作,而在1.6.2中不工作?

为什么这个切换复选框函数在jQuery 1.3.2中工作,而在1.6.2中不工作?,jquery,css,Jquery,Css,这段代码只是切换复选框和调整文本框css。默认情况下,文本框为只读,然后单击复选框时,它应调整只读并高亮显示文本框 下面的代码在1.3.2中运行良好,但在1.6.2中没有任何作用。有什么变化吗 $(document).ready(function() { $("#toggleAll").click(function() { var $checkBoxes = $("input:checkbox.closeItem"); $checkBoxes.attr("

这段代码只是切换复选框和调整文本框css。默认情况下,文本框为只读,然后单击复选框时,它应调整只读并高亮显示文本框

下面的代码在1.3.2中运行良好,但在1.6.2中没有任何作用。有什么变化吗

$(document).ready(function() {
    $("#toggleAll").click(function() {
        var $checkBoxes = $("input:checkbox.closeItem");
        $checkBoxes.attr("checked", $(this).attr("checked"));

       $("input:checkbox.closeItem").each(function() {
            HandleCheckboxCheck($(this));
        });
    });

    $("input:checkbox.closeItem").click(function() {
        HandleCheckboxCheck($(this));
     });

});
function HandleCheckboxCheck($check) {
    var $trackingNumber = $check.parent().siblings("td.trackingNumber").children(0);
        if ($check.attr("checked") == true) {
            $check.attr("checked", true);
            $trackingNumber.addClass("highlight");
            $trackingNumber.removeAttr("readonly");
            $trackingNumber.val("");
        } else {
            $check.attr("checked", false);
            $trackingNumber.removeClass("highlight");
            $trackingNumber.attr("readonly", "readonly");
            $trackingNumber.val("Check to Enable");
        }
    }

.prop是切换复选框的正确方法

本节介绍.attr的行为:

$(elem).attr(“checked”)(1.6)“checked”(字符串)复选框的初始状态;不变 $(elem).attr(“已选中”)(1.6.1+“已选中”(字符串)将随复选框状态而更改
$(elem).attr(“checked”)(1.6之前)true(Boolean)随复选框状态更改。prop是切换复选框的正确方法

本节介绍.attr的行为:

$(elem).attr(“checked”)(1.6)“checked”(字符串)复选框的初始状态;不变 $(elem).attr(“已选中”)(1.6.1+“已选中”(字符串)将随复选框状态而更改
$(elem).attr(“checked”)(1.6之前)true(Boolean)随jQuery 1.6.2中复选框状态的改变而改变,测试复选框的
.attr(“checked”)
返回“checked”或
未定义的

在jQuery 1.3.2中,它返回
true
false

示例代码询问($check.attr(“checked”)==true)
——这在jQuery 1.6.2中从未出现过


但是,如果您仅用
if($check.attr(“checked”)
替换该代码,您应该会得到相同的结果。

在jQuery 1.6.2中,测试
.attr('checked')
复选框返回“checked”或
未定义的

在jQuery 1.3.2中,它返回
true
false

示例代码询问($check.attr(“checked”)==true)
——这在jQuery 1.6.2中从未出现过



但是,如果您将该代码替换为if($check.attr(“checked”),您应该会得到相同的结果。

当您刚刚确认它已经是
true时,为什么要设置
$check.attr(“checked”,true)
?我明白你的意思,但正如我所说的,上面的代码在1.3.2中是有效的,但在1.6.2中没有任何作用。我没有收到错误信息,它只是没有任何作用。所以现在你的标题包含的信息与问题的主体直接冲突。代码在jQuery 1.3.2还是1.6.2中工作?在更改.attr()之前,它在1.3.2中工作是的,它在较旧的版本中工作,只是不在较新的版本中。当您刚刚确认它已经是
true
时,为什么要设置
$check.attr(“checked”,true)
?我明白你的意思,但正如我所说的,上面的代码在1.3.2中是有效的,但在1.6.2中没有任何作用。我没有收到错误信息,它只是没有任何作用。所以现在你的标题包含的信息与问题的主体直接冲突。代码在jQuery 1.3.2或1.6.2中工作吗?在更改.attr()之前,它在1.3.2中工作。是的,它在旧版本中工作,只是不在新版本中。prop是在1.6+中切换复选框的正确方法,这是问题的一部分。转到链接。几乎所有关于.prop()方法的讨论都涉及复选框。@BNL。这根本不能回答问题。S/他问为什么现有代码在1.3.2中不起作用。q:“在jQuery 1.6.2和1.3.2中切换复选框[…]的正确方法是什么?”a:“Prop”他的标题有误导性,但如果你阅读了问题本身,你会意识到其意图并不是对标题的更直接的解释。Prop是在1.6+中切换复选框的正确方法,这是问题的一部分,请转到链接。几乎所有关于.prop()方法的讨论都涉及复选框。@BNL。这根本不能回答问题。S/他问为什么现有代码在1.3.2中不起作用。q:“在jQuery 1.6.2和1.3.2中切换复选框[…]的正确方法是什么?”a:“Prop”他的标题有误导性,但如果你阅读了问题本身,你会意识到意图不是对标题的更直接的解释。如果他已经在更改代码,他应该将其更改为实际返回true/false的prop,而不是.attr(“checked”),后者(至少是直接的)…attr(“checked”)看起来在1.6.3中不起作用。如果他已经在更改代码,他应该将其更改为实际返回true/false的prop,而不是.attr(“checked”),后者(至少直接地)…attr(“checked”)看起来在1.6.3中不起作用。