组合多个.removeAttr()语句

时间:2013-02-28 16:46:02

标签: javascript jquery

我有多个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

感谢任何帮助。感谢。

4 个答案:

答案 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。