web-dev-qa-db-fra.com

"Tous mais pas" sélecteur jQuery

Je peux sélectionner (avec jQuery) tous les divs dans un balisage HTML comme suit:

$('div')

Mais je veux exclure un div particulier (par exemple, avoir id="myid") parmi la sélection ci-dessus.

Comment puis-je faire cela en utilisant les fonctions Jquery?

81
siva636

Simple:

$('div').not('#myid');

En utilisant .not() , les éléments correspondant au sélecteur qui lui est attribué sont supprimés de l'ensemble renvoyé par $('div').

Vous pouvez également utiliser le sélecteur :not() :

$('div:not(#myid)');

Les deux sélecteurs font la même chose, cependant :not() est plus rapide , probablement parce que le moteur de sélection de jQuery, Sizzle, peut l'optimiser dans un appel natif .querySelectorAll().

158
Bojangles
var els = toArray(document.getElementsByTagName("div"));
els.splice(els.indexOf(document.getElementById("someId"), 1);

Vous pouvez simplement le faire à l'ancienne. Pas besoin de jQuery avec quelque chose d'aussi simple.

Conseils Pro:

Un ensemble d’éléments dom n’est qu’un tableau, utilisez donc votre méthode toArray préférée sur un NodeList.

L'ajout d'éléments à un ensemble est juste

set.Push.apply(set, arrOfElements);

Supprimer un élément d'un ensemble est

set.splice(set.indexOf(el), 1)

Vous ne pouvez pas facilement supprimer plusieurs éléments à la fois :(

9
Raynos
$("div:not(#myid)")

[doc]

ou

$("div").not("#myid")

[doc]

sont les principaux moyens de sélectionner tous les identifiants sauf un

Vous pouvez voir démo ici

5
genesis
   var elements =  $('div').not('#myid');

Cela inclura tous les divs sauf celui avec l'identifiant 'myid'

4
Ehtesham
$('div:not(#myid)');

c'est ce dont vous avez besoin, je pense.

3
abhijit

Ça devrait le faire:

$('div:not("#myid")')
3
iappwebdev

Vous utilisez le .not propriété de la bibliothèque jQuery:

$('div').not('#myDiv').css('background-color', '#000000');

Voir en action ici . La div #myDiv sera blanche.

3
Kyle