2012-05-10 28 views
66

Ho un div #popup riempito in modo dinamico con diversi paragrafi con la classe .filled-text. Sto cercando di ottenere jQuery per dirmi se #popup contiene uno di questi paragrafi.Utilizzo di jQuery per verificare se un div ha un figlio con una determinata classe

ho questo codice:

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

Qualche suggerimento?

+0

Siete alla ricerca solo per un bambino ** ** ** o per qualsiasi discendente ** (figlio, nipote, pronipote, ecc). Il titolo della domanda attualmente dice "bambino" ma le risposte sembrano parlare di discendenti arbitrari. – hippietrail

+0

Al momento credo che stavo cercando un bambino in particolare, ma è difficile da ricordare con certezza dato che questa domanda ha quasi 4 anni. In entrambi i casi, la domanda e la risposta riguardano sia i bambini che i discendenti, e ci sono anche delle risposte che riguardano specificamente i bambini e non i discendenti, quindi non sono sicuro di cosa stai cercando di ottenere. – Samsquanch

+0

Oh, è solo che quando si utilizza un motore di ricerca per cercare una domanda specifica per cercare un elemento con un bambino che corrisponde a un selettore questo è quello che trova così avrei modificato il titolo della domanda se fosse impreciso per aiutare le altre persone trova la domanda giusta in futuro. – hippietrail

risposta

127

è possibile utilizzare la funzione di find:

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

In realtà funzionava come avevo bisogno, ma per riferimento 'if ($ ('# popup'). Ha ('p.filled-text'). Length! = 0) {' funziona anche. – Samsquanch

+6

Non è necessario controllare 0. 0 è un falso in js. https://developer.mozilla.org/en-US/docs/Glossary/Falsy – ravi

1

Se è un figlio diretto si può fare come di seguito se potesse essere nidificato più profonda rimuovere il>

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

v'è una funzione

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

Utilizzare la children funcion di j Query.

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

$.children('').length restituirà il conteggio di elementi figlio, che corrispondono al selettore.

+0

'.size()' restituisce la stessa proprietà '.length' ma è più lento, quindi è necessario sostituirlo. –

+0

Grazie Johnnes per avermelo fatto notare! Non lo sapevo Answare aggiornato! –

+0

Prego, ma c'è ancora un errore. È '.length' not' .length() ' –

2

-semplice

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

qual è la differenza tra size() e length ???? –

+1

Il metodo .size() è funzionalmente equivalente alla proprietà .length; tuttavia, la proprietà .length è preferibile perché non ha il sovraccarico di una chiamata di funzione. –

+1

rif: http://api.jquery.com/size/ –

Problemi correlati