Jquery-Filterung hat + nicht
Okay ich Liste posten, einige haben eine Spanne, einige nicht.
Auf meiner Veranstaltung möchte ich hinzufügen, dass die Spanne, wenn Sie gar keine haben noch.
has()
funktioniert gut, aber not()
fügt dem span-Tag??
HTML:
<ul>
<li>
<p>item</p>
<span class="spn">empty span</span>
</li>
<li>
<p>item 2</p>
</li>
<ul>
<hr>
<a class="add-span"href="#">check</a>
JS:
$("a.add-span").click(function() {
$("li").each(function(index) {
//$(this).has("span").find("span").append(" - appended");
$(this).not("span").append('<span class="spn">new span<\/span>');
})
})
InformationsquelleAutor der Frage FFish | 2010-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine Kombination der :nicht und :hat Selektoren wie diese
Hier ist ein demo http://www.jsfiddle.net/xU6fV/
InformationsquelleAutor der Antwort John Hartsock
Mit
children()
Methode, dielength
- Eigenschaft wird verwendet, um zu überprüfen, ob oder nicht einespan
bereits vorhanden ist und falls nicht, wird eines Hinzugefügt/angehängt.Mehr Info:
InformationsquelleAutor der Antwort Sarfraz
Akzeptierte Antwort funktioniert gut, wenn Sie nicht wollen, heraus zu filtern und nur die Elemente, die zu tun haben, die
span
s als direkte Kinder.Als
:has()
und die.has()
Schleife über alle Nachkommen, nicht nur die Kinder.In diesem Fall müssen Sie eine Funktion verwenden,
InformationsquelleAutor der Antwort HerrSerker
Versuchen, diese,
InformationsquelleAutor der Antwort Rashmin Javiya
Dies ist der erste link bei Google bei der Suche "jquery nicht hat". Die spezifischen Szenario, das ich brauchte, um zu lösen, war ein wenig anders. Ich musste
not
Elemente, die ein bestimmtes DOM-element, nicht einfach auf einen tag. Dies bedeutete, dass ich konnte nicht mithilfe einer Auswahl, die jede Lösung, die oben verwendet.jQuery
()
jedoch akzeptiert ein DOM-element! Also schuf ich ein jQuery-plugin, um kombinieren Sie diese beiden eingebauten Funktionen.Wollte ich Teile es hier, weil ich hoffe, es wird helfen, andere in meiner situation auch. Es gibt auch die Antwort der ursprünglichen Frage.
Plugin:
Umsetzung:
https://jsfiddle.net/brjkg10n/1/
Ich war zunächst in der Absicht zu finden, die eine jQuery-Funktion, die funktionieren würde, wie
addBack()
aber mitnot
statt. Wenn Sie etwas brauchen, so kompliziert, dann nutzen Sie bitte das folgende plugin.Mit dabei, die Antwort wäre:
https://jsfiddle.net/2g08gjj8/1/
InformationsquelleAutor der Antwort IphStich