Usare jQuery per vedere se un div ha un figlio con una certa classe


114

Ho un div #popupche viene riempito dinamicamente con diversi paragrafi con la classe .filled-text. Sto cercando di convincere jQuery a dirmi se #popupcontiene uno di questi paragrafi.

Ho questo codice:

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

Eventuali suggerimenti?


1
Stai cercando solo un figlio o un discendente (figlio, nipote, pronipote, ecc.). Il titolo della domanda attualmente dice "bambino" ma le risposte sembrano parlare di discendenti arbitrari.
Hippietrail

A quel tempo credo che stavo cercando specificamente un bambino, ma è difficile da ricordare con certezza poiché questa domanda ha quasi 4 anni. In ogni caso, la domanda e la risposta riguardano sia i bambini che i discendenti, e ci sono anche risposte che riguardano specificamente i bambini e non i discendenti, quindi non sono sicuro di cosa stai cercando di ottenere.
Samsquanch,

Oh, è solo che quando si utilizza un motore di ricerca per cercare una domanda specifica sulla ricerca di un elemento con un bambino che corrisponde a un selettore, questo è quello che trova, quindi avrei modificato il titolo della domanda se fosse inaccurato per aiutare altre persone a trovare la domanda giusta in futuro.
Hippietrail

Risposte:




7

Usa la funzione children di jQuery.

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

$.children('').length restituirà il conteggio degli elementi figli che corrispondono al selettore.


1
.size()restituisce lo stesso della .lengthproprietà ma è più lento, quindi dovresti sostituirlo.
Johannes Klauß

Grazie Johnnes per avermelo fatto notare! Non lo sapevo. Answare aggiornato!
Christopher Ramírez

Prego, ma c'è ancora un errore. E ' .lengthnon è.length()
Johannes Klauß

: PI pensava che fosse una funzione come la maggior parte delle interfacce jQuery. Una specie di incoerenza credo. Ma beh, answare aggiornato ancora una volta: P Grazie Johannes.
Christopher Ramírez

La .lengthproprietà non fa parte della libreria jQuery, è solo javascript nativo. Ma sì, a volte può creare confusione.
Johannes Klauß

4

Modo semplice

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

2
Il metodo .size () è funzionalmente equivalente alla proprietà .length; tuttavia, la proprietà .length è preferita perché non ha l'overhead di una chiamata di funzione.
Hitesh Modha

1

Se è un figlio diretto puoi fare come di seguito se potrebbe essere annidato più in profondità rimuovere il>

$("#text-field").keydown(function(event) {
    if($('#popup>p.filled-text').length !== 0) {
        console.log("Found");
     }
});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.