Ceci est le premier lien sur Google lors de la recherche "jquery a non". Le scénario spécifique que je devais résoudre était un peu différent de celui-ci. Je devais not
articles qui ont un élément DOM spécifique, pas simplement basé sur une étiquette. Cela signifiait que je ne pouvais pas utiliser un sélecteur que chaque solution ci-dessus utilisé. Cependant, le has()
de jQuery accepte un élément DOM! J'ai donc créé un plugin jQuery pour combiner ces deux fonctions intégrées. Je voulais le partager ici parce que j'espère que cela aidera aussi les autres dans ma situation. Il répond également à la question initiale.
Le plug-in:
(function ($) {
$.fn.extend({
not_has: function (param) {
return this.not(this.has(param));
}
});
}(jQuery));
Mise en œuvre:
$("a.add-span").click(function() {
$("li").not_has("span")
.append('<span class="spn">new span<\/span>');
// Prevent the page from navigating away
return false;
});
https://jsfiddle.net/brjkg10n/1/
Je comptais d'abord trouver une fonction jQuery qui fonctionnerait comme addBack()
mais en utilisant not
à la place. Si vous avez besoin de quelque chose d'aussi compliqué, n'hésitez pas à utiliser le plugin suivant.
(function ($) {
$.fn.extend({
notBack: function() {
return this.prevObject.not(this);
}
});
}(jQuery));
Avec cela, la réponse serait:
$("li").has("span").notBack()
.append('<span class="spn">new span<\/span>');
https://jsfiddle.net/2g08gjj8/1/
Voir aussi http://stackoverflow.com/questions/2624832/jquery-selector-for-div-which- does-not-contain-img – goodeye