此代码只是切换复选框并调整文本框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");
}
}
答案 0 :(得分:3)
.prop是切换复选框的正确方法。
本节介绍.attr的行为:
$(elem).attr(“checked”)(1.6)“checked”(字符串)复选框的初始状态;不会改变 $(elem).attr(“checked”)(1.6.1+)“checked”(字符串)将随复选框状态而变化 $(elem).attr(“checked”)(pre-1.6)true(布尔值)已更改为复选框状态
答案 1 :(得分:2)
在jQuery 1.6.2中,为复选框测试.attr('checked')
会返回“已选中”或undefined
:http://jsfiddle.net/wkDgv/5/
在jQuery 1.3.2中,它返回true
或false
:http://jsfiddle.net/wkDgv/4/
您的示例代码询问{{1}} - 这在jQuery 1.6.2中永远不会发生。 http://jsfiddle.net/wkDgv/6/
但是,如果您仅使用if ($check.attr("checked") == true)
替换该代码,则应获得相同的结果。