Używanie jQuery do sprawdzania, czy element div ma dziecko z określoną klasą


114

Mam div, #popupktóry jest dynamicznie wypełniany kilkoma akapitami z klasą .filled-text. Próbuję sprawić, by jQuery powiedział mi, czy #popupzawiera jeden z tych akapitów.

Mam ten kod:

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

Jakieś sugestie?


1
Szukasz tylko dziecka lub potomka (dziecko, wnuk, prawnuk itp.). Tytuł pytania obecnie mówi „dziecko”, ale odpowiedzi wydają się mówić o arbitralnych potomkach.
— hippietrail

Wydaje mi się, że wtedy konkretnie szukałem dziecka, ale trudno to zapamiętać, ponieważ to pytanie ma prawie 4 lata. Tak czy inaczej, pytanie i odpowiedź dotyczą zarówno dzieci, jak i potomków, a są też odpowiedzi, które dotyczą konkretnie dzieci, a nie potomków, więc nie jestem pewien, do czego próbujesz dotrzeć.
— Samsquanch

Och, chodzi o to, że podczas wyszukiwania w wyszukiwarce pytania konkretnie o szukanie elementu z dzieckiem pasującym do selektora jest to ten, który znajduje, więc poprawiłbym tytuł pytania, gdyby był niedokładny, aby pomóc innym osobom znaleźć właściwe pytanie w przyszłości.
— hippietrail

Odpowiedzi:




7

Użyj funkcji dzieci jQuery.

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

$.children('').length zwróci liczbę elementów potomnych, które pasują do selektora.


1
.size()zwraca to samo, co .lengthwłaściwość, ale jest wolniejsze, więc należy to zastąpić.
— Johannes Klauß

Dzięki Johnnes za wskazanie mi tego! Nie wiedziałem tego. Zaktualizowano Answare!
— Christopher Ramírez

Nie ma za co, ale nadal jest błąd. To .lengthnie jest.length()
— Johannes Klauß

: PI pomyślał, że to funkcja podobna do większości interfejsów jQuery. Myślę, że to rodzaj niekonsekwencji. Ale cóż, answare został ponownie zaktualizowany: P Dzięki Johannes.
— Christopher Ramírez

.lengthNieruchomość nie jest częścią biblioteki jQuery, to tylko rodzimy JavaScript. Ale tak, czasami może to być mylące.
— Johannes Klauß

4

Prosta droga

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

2
Metoda .size () jest funkcjonalnym odpowiednikiem właściwości .length; jednak właściwość .length jest preferowana, ponieważ nie ma narzutu wywołania funkcji.
— Hitesh Modha

1

Jeśli jest to bezpośrednie dziecko, możesz zrobić jak poniżej, jeśli można je zagnieździć głębiej, usuń>

$("#text-field").keydown(function(event) {
    if($('#popup>p.filled-text').length !== 0) {
        console.log("Found");
     }
});
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.