Pytanie Za pomocą jQuery sprawdź, czy div ma dziecko z określoną klasą


Mam div #popup który jest dynamicznie wypełniany kilkoma akapitami z klasą .filled-text. Próbuję uzyskać jQuery, aby mi powiedzieć, czy #popup ma jeden z tych akapitów.

Mam ten kod:

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

Jakieś sugestie?


76
2018-05-10 17:21


pochodzenie


Czy szukasz tylko dla dziecko lub dla każdego potomek (dziecko, wnuk, prawnuczka, itp.). W tytule pytania obecnie mówi się "dziecko", ale odpowiedzi wydają się mówić o arbitralnych potomkach. - hippietrail
W tym czasie uważam, że szczególnie szukałem dziecka, ale na pewno trudno o nim pamiętać, ponieważ to pytanie ma prawie 4 lata. Tak czy inaczej, pytanie i odpowiedź obejmują zarówno dzieci, jak i potomków, i są też odpowiedzi, które dotyczą konkretnie dzieci, a nie potomków, więc nie jestem pewien, do czego próbujesz się dostać. - Samsquanch
Och, po prostu podczas korzystania z wyszukiwarki, szukając konkretnego pytania na temat szukania elementu z dzieckiem pasującym do selektora, znajduje się ten, który znajdował, więc poprawiłbym tytuł pytania, gdyby był niedokładny, by pomóc innym znaleźć właściwe pytanie w przyszłości. - hippietrail


Odpowiedzi:


Możesz użyć odnaleźć funkcjonować:

if($('#popup').find('p.filled-text').length !== 0)
   // Do Stuff

144
2018-05-10 17:23



To działało tak, jak było mi potrzebne, ale w celach informacyjnych if($('#popup').has('p.filled-text').length != 0) { działa również. - Samsquanch
Nie trzeba sprawdzać, czy 0. 0 to falsey w js. developer.mozilla.org/en-US/docs/Glossary/Falsy - ravi


Tam jest hasClass funkcjonować

if($('#popup p').hasClass('filled-text'))

29
2018-05-10 17:25





Użyj dzieci funcion of jQuery.

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

$.children('').length zwróci liczbę elementów podrzędnych zgodnych z selektorem.


6
2018-05-10 17:25



.size() zwraca to samo, co znak .length właściwość, ale jest wolniejsza, więc powinieneś ją zastąpić. - Johannes Klauß
Dziękuję Johnowi za wskazanie mi tego! Nie wiedziałem tego. Aktualizacja Answare! - Christopher Ramírez
Nie ma za co, ale wciąż jest błąd. Jego .length nie .length() - Johannes Klauß
: P Myślałem, że jest to funkcja podobna do większości interfejsów jQuery. Wydaje mi się, że to niespójność. Ale dobrze, answare zaktualizowany po raz kolejny: P Dzięki Johannes. - Christopher Ramírez
The .length Właściwość nie jest częścią biblioteki jQuery, jest to po prostu natywny javascript. Ale tak, czasami może być mylące. - Johannes Klauß


Prosta droga

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

3
2018-05-08 06:20



jaka jest różnica między size () a length ????
Metoda .size () jest funkcjonalnie równoważna właściwości .length; Jednak właściwość .length jest preferowana, ponieważ nie ma narzutów wywołania funkcji. - Hitesh Modha
ref: api.jquery.com/size - Hitesh Modha


Jeśli jest to bezpośrednie dziecko, możesz zrobić to jak poniżej, jeśli mogłoby być zagnieżdżone głębiej, usuń>

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

1
2018-05-10 17:24