我有多个removeAttr()
是否可以将它们组合起来?
我拥有的东西:(这有效)
checkboxes.removeAttr("checked",'checked');
checkboxes.removeAttr("indeterminate", false);
checkboxes.removeAttr("role", 'checkbox');
checkboxes.removeAttr("aria-checked", false);
我尝试了什么:(这不起作用)
checkboxes.removeAttr({
checked: 'checked',
indeterminate: false,
role: 'checkbox',
'aria-checked': false
});
当我尝试这个时,我得到以下控制台错误。所以要么我的语法错误,要么这不起作用。
Uncaught TypeError: Object #<Object> has no method 'toLowerCase' jquery.min.js:2
感谢任何帮助。感谢。
答案 0 :(得分:5)
只需将$.each
与数组一起使用,即快速,简短和可扩展。
$.each(["checked","indeterminate"],function(i,attrName){
checkbox.removeAttr(attrName);
});
答案 1 :(得分:3)
根据 removeAttr() doc,它不接受对象。所以
checkboxes.removeAttr({});
无效。并且它还接受一个参数[thx @RocketHazmat]进行校正,以便进行校正。
您可以像以下一样进行链接:
checkboxes
.removeAttr("checked")
.removeAttr("indeterminate")
.removeAttr("role")
.removeAttr("aria-checked");
但是如果你想设置属性,那么你就要使用attr()
方法,如:
checkboxes
.attr("checked", 'checked')
.attr("indeterminate",false )
.attr("role",'checkbox')
.attr("aria-checked", false);
答案 2 :(得分:1)
我不确定您为什么要将密钥和值都传递给removeAttr
,但如果您只想从元素中删除这4个属性,请传递以空格分隔的列表键,如:
checkboxes.removeAttr("checked indeterminate role aria-checked");
答案 3 :(得分:1)
@RocketHazmat是对的,所以它会是这样的:
checkboxes.removeAttr("checked indeterminate role aria-checked");
但你需要1.7或更高版本的jQuery。