Verwenden von jQuery, um festzustellen, ob ein Div ein Kind mit einer bestimmten Klasse hat


114

Ich habe ein Div #popup, das dynamisch mit mehreren Absätzen der Klasse gefüllt ist .filled-text. Ich versuche, jQuery dazu zu bringen, mir mitzuteilen, ob #popupeiner dieser Absätze enthalten ist.

Ich habe diesen Code:

$("#text-field").keydown(function(event) {
    if($('#popup').has('p.filled-text')) {
        console.log("Found");
     }
});

Irgendwelche Vorschläge?


1
Suchen Sie nur ein Kind oder einen Nachkommen (Kind, Enkel, Urenkel usw.) ? Der Fragentitel lautet derzeit "Kind", aber die Antworten scheinen über beliebige Nachkommen zu sprechen.
Hippietrail

Zu der Zeit, glaube ich, habe ich speziell nach einem Kind gesucht, aber es ist schwer, sich sicher zu erinnern, da diese Frage fast 4 Jahre alt ist. In beiden Fällen decken Frage und Antwort sowohl Kinder als auch Nachkommen ab, und es gibt auch Antworten, die sich speziell auf Kinder und nicht auf Nachkommen beziehen. Ich bin mir also nicht sicher, worauf Sie abzielen.
Samsquanch

Oh, es ist nur so, dass wenn ich eine Suchmaschine verwende, um nach einer Frage zu suchen, die speziell nach einem Element mit einem Kind sucht, das mit einem Selektor übereinstimmt, dieses gefunden wird. Ich hätte also den Fragentitel angepasst, wenn er ungenau wäre, um anderen Menschen bei der Suche zu helfen die richtige Frage in der Zukunft.
Hippietrail

Antworten:




7

Verwenden Sie die Kinder funcion von jQuery.

$("#text-field").keydown(function(event) {
    if($('#popup').children('p.filled-text').length > 0) {
        console.log("Found");
     }
});

$.children('').length gibt die Anzahl der untergeordneten Elemente zurück, die mit dem Selektor übereinstimmen.


1
.size()Gibt die gleiche .lengthEigenschaft wie die Eigenschaft zurück, ist jedoch langsamer. Sie sollten diese also ersetzen.
Johannes Klauß

Vielen Dank an Johnnes, dass er mich darauf hingewiesen hat! Ich wusste es nicht. Answare aktualisiert!
Christopher Ramírez

Gern geschehen, aber es liegt immer noch ein Fehler vor. Es ist .lengthnicht.length()
Johannes Klauß

: PI dachte, es sei eine Funktion wie die meisten jQuery-Schnittstellen. Art von Inkonsistenz denke ich. Aber gut, Answare noch einmal aktualisiert: P Danke Johannes.
Christopher Ramírez

Die .lengthEigenschaft ist nicht Teil der jQuery-Bibliothek, sondern nur natives Javascript. Aber ja, manchmal kann es verwirrend sein.
Johannes Klauß

4

Einfacher Weg

if ($('#text-field > p.filled-text').length != 0)

2
Die .size () -Methode entspricht funktional der .length-Eigenschaft. Die Eigenschaft .length wird jedoch bevorzugt, da sie nicht den Overhead eines Funktionsaufrufs hat.
Hitesh Modha

1

Wenn es sich um ein direktes Kind handelt, können Sie wie folgt vorgehen, wenn es tiefer verschachtelt sein könnte. Entfernen Sie das>

$("#text-field").keydown(function(event) {
    if($('#popup>p.filled-text').length !== 0) {
        console.log("Found");
     }
});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.