组合多个. removeattr()语句

Combing multiple .removeAttr() statements

本文关键字:语句 removeattr 组合      更新时间:2023-09-26

我有多个removeAttr()是否有一种方法可以将它们组合起来?

What I have: (this works)

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

任何帮助都是感激的。谢谢。

只需使用$.each与数组,快速,简短,可扩展。

$.each(["checked","indeterminate"],function(i,attrName){
    checkbox.removeAttr(attrName);
});

根据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);

我不知道为什么你传递键和值到removeAttr,但如果你只是想从一个元素中删除这4个属性,传递一个空格分隔的键列表,像这样:

checkboxes.removeAttr("checked indeterminate role aria-checked");

@RocketHazmat是正确的,所以它应该是这样的:

checkboxes.removeAttr("checked indeterminate role aria-checked");