我在最左边的列中有一个带有复选框的表格。选中每行的复选框后,该行会更改颜色以反映此情况。在表格标题中,还有一个“全选”复选框。
// Checks/unchecks all checkboxes ending with a particular ID string within a table
function SelectAllRows(SelectAllCheckBox, IdEndsWith) {
var isChecked = $(SelectAllCheckBox).is(":checked");
$(SelectAllCheckBox).closest('table').find("input[type='checkbox'][id*='" + IdEndsWith + "']").attr("checked", isChecked);
HighlightRowsOnChecked(SelectAllCheckBox, IdEndsWith);
}
JQuery很小,但出于某种原因会出现以下逻辑:
有人可以帮助完善这段代码来消除这种奇怪的行为吗?非常感谢。
当我的脑袋旋转时,我们也会感激不尽的解释!
答案 0 :(得分:2)
在这种情况下,您应该使用.prop()
代替.attr()
:
$(SelectAllCheckBox).closest('table')
.find("input[type='checkbox'][id*='" + IdEndsWith + "']")
.prop("checked", isChecked);
属性与属性
在特定情况下,属性和属性之间的区别很重要。在jQuery 1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()检索属性。