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?
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()
.
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 :(
var elements = $('div').not('#myid');
Cela inclura tous les divs sauf celui avec l'identifiant 'myid'
$('div:not(#myid)');
c'est ce dont vous avez besoin, je pense.
Ça devrait le faire:
$('div:not("#myid")')
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.