2011-10-04 9 views
51

Devo specificare .unbind() tutti gli elementi da un nodo genitore.Come selezionare TUTTI i bambini (in qualsiasi livello) da un genitore in jQuery?

Come posso selezionare tutti i bambini (a qualsiasi livello) da un genitore?

provato:

$('#google_translate_element *').unbind('click'); 

ma funziona solo per il livello dei primi bambini ...

Here c'è un banco di prova

+0

Hai un banco di prova che dimostra questo? – lonesomeday

+2

Non puoi semplicemente fare $ ('# google_translate_element'). Find ('*'). Unbind ('click'); – rickyduck

risposta

100

Usa jQuery.find() per trovare i bambini più di un livello in profondità. Metodi

Il .find() e .children() sono simili, tranne che la quest'ultimo viaggia solo un singolo livello l'albero DOM.

$('#google_translate_element').find('*').unbind('click'); 

è necessario il '*' in find():

A differenza del resto dei metodi di attraversamento di alberi, è richiesto il selettore espressione in una chiamata a .find(). Se abbiamo bisogno di recuperare tutti gli elementi discendenti di , possiamo farlo nel selettore universale '*' per ottenere ciò.

+0

sto usando questo adesso ma devo preoccuparmi delle prestazioni? – ProblemsOfSumit

+1

Sì, fuori orario. Dovresti sempre preoccuparti delle prestazioni. I browser moderni saranno abbastanza veloci nell'esecuzione, ma se si incontrano problemi per questo specifico frammento, prova a mantenere l'elemento genitore piccolo (non troppi bambini) o raggruppare i bambini in gruppi più piccoli. – Konerak

16

penso che si possa fare:

$('#google_translate_element').find('*').each(function(){ 
    $(this).unbind('click'); 
}); 

ma sarebbe causare un sacco di spese generali

Problemi correlati