次のように、HTMLマークアップ内のすべてのdivを(jQueryを使用して)選択できます。
$('div')
しかし、私は上記の選択から特定のdiv
(たとえば持っているid="myid"
)を除外したいと思います。
Jquery関数を使用してこれを行うにはどうすればよいですか?
回答:
.not()
いるはるかに、はるかに優れてより:not()
。
$('div:not(#myid)');
(引用符なしで)あるべきだと思います。@Raynos:なぜですか?:not()
CSS3セレクターです。jQueryはquerySelectorAll
、サポートされている場合、セレクターを直接渡すことができます...
.not
読みにくくなります。「:jQueryのセレクターではない」と言うべきだった
:not()
。内の引用符を許可したことはありません。このセレクターはセレクター4の新機能ではなく、引用符を使用できるように変更されていません。ただし、より複雑なセレクターを許可するように変更されました。私があなたのコメントを誤解しない限り
querySelectorAll
ました。実際のベンチマークではありませんが、jQuery内部からのオーバーヘッドがないため、予想されます。:not()
おそらくSizzleが使用するように最適化できることを知っているため、実際には高速ですquerySelectorAll()
var els = toArray(document.getElementsByTagName("div"));
els.splice(els.indexOf(document.getElementById("someId"), 1);
昔ながらの方法でそれを行うことができます。とてもシンプルなものでjQueryは必要ありません。
プロのヒント:
dom要素のセットは単なる配列なので、でお気に入りのtoArray
メソッドを使用しますNodeList
。
セットに要素を追加するだけです
set.push.apply(set, arrOfElements);
セットから要素を削除することは
set.splice(set.indexOf(el), 1)
一度に複数の要素を簡単に削除することはできません:(
.querySelector()
または.querySelectorAll()
withの使用 div:not(#myid)
がより高速です...そうですか?
$("div:not(#myid)")
もっと速いです...ネイティブJavascriptまたはを使用する場合は、sizzlejsの最適化を確認してください。.querySelector()
.querySelectorAll()
それはそれをするべきです:
$('div:not("#myid")')