Questo è il primo anello su Google durante la ricerca "jquery non ha". Lo scenario specifico che dovevo risolvere era leggermente diverso da questo. Ho dovuto aggiungere gli elementi not
che hanno uno specifico elemento DOM, non semplicemente basati su un tag. Ciò significava che non potevo usare un selettore che utilizzava ciascuna soluzione sopra.
jQuery's has()
tuttavia accetta un elemento DOM! Così ho creato un plugin jQuery per combinare queste due funzioni integrate.
Ho voluto condividerlo qui perché spero che possa aiutare anche gli altri nella mia situazione. Risponde anche alla domanda originale.
il plugin:
(function ($) {
$.fn.extend({
not_has: function (param) {
return this.not(this.has(param));
}
});
}(jQuery));
Implementazione:
$("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/
mi è stato inizialmente l'intenzione di trovare una funzione jQuery che avrebbe funzionato come addBack()
ma utilizzando not
invece. Se hai bisogno di qualcosa di così complicato, non esitare a utilizzare il seguente plug-in.
(function ($) {
$.fn.extend({
notBack: function() {
return this.prevObject.not(this);
}
});
}(jQuery));
Con questo, la risposta sarebbe:
$("li").has("span").notBack()
.append('<span class="spn">new span<\/span>');
https://jsfiddle.net/2g08gjj8/1/
Vedi anche http://stackoverflow.com/questions/2624832/jquery-selector-for-div-which- does-not-contain-img – goodeye