1

複数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

4 に答える 4

5

アレイで使用$.eachするだけで、すばやく、短く、拡張可能です。

$.each(["checked","indeterminate"],function(i,attrName){
    checkbox.removeAttr(attrName);
});
于 2013-02-28T16:50:37.943 に答える
3

removeAttr()ドキュメントによると、オブジェクトを受け入れません。それで

checkboxes.removeAttr({});動作しないでしょう。また、削除する修正用に1つのパラメーター[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);
于 2013-02-28T16:47:52.767 に答える
1

キーと値の両方をに渡す理由はわかりませんがremoveAttr、要素からこれらの4つの属性を削除するだけの場合は、次のように、スペースで区切られたキーのリストを渡します。

checkboxes.removeAttr("checked indeterminate role aria-checked");
于 2013-02-28T16:52:08.813 に答える
1

@RocketHazmatは正しいので、次のようになります。

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

ただし、jQueryから1.7以降が必要です。

于 2013-02-28T16:52:16.803 に答える