2010-08-29 5 views
5

Ho il seguente:gestore delegato e bambini interiori cliccato

<ul id ='foo'> 
    <li><p>hello</p></li> 
    <li><p>hello</p></li> 
    <li><p>hello</p></li> 
</ul> 

$('#foo').delegate('li', 'click', function(event) { 
    var target = $(event.target); 
    console.log(target); 
}); 

il gestore click viene chiamato ogni volta che uno degli elementi interni p ottiene cliccato, così come gli elementi padre li.

Come posso ottenere un puntatore all'elemento padre li, indipendentemente da quale elemento figlio interno è stato fatto clic? Ad esempio, i miei elementi reali li assomigliano:

<li> 
    <p>one</p> 
    <div> 
    <p>two</p> 
    </div> 
</li> 

quindi mi sto trovando devo avere diversi controlli per tornare fino alla Li genitore che è stato cliccato. C'è un modo per selezionare solo il genitore di un tipo come:

$('#foo').delegate('li', 'click', function(event) { 
    var target = $(event.target).('li'); 
    console.log(target); // will always be parent li element itself? 
}); 

Grazie

risposta

2

Nel gestore, this farà riferimento all'elemento li.

$('#foo').delegate('li', 'click', function(event) { 
    var target = $(this); 
    console.log(target); // will always be parent li element itself? 
}); 
0

var target = $ (questo) deve essere unidirezionale - è così che solitamente lo faccio. $ (event.target) .parents ("li") sarebbe un altro, ma potresti raccogliere più di quanto ti aspetti.

+0

che dovrebbe essere 'padre',' genitori' restituirebbe tutti 'li' se si annida' ul's per un menu per esempio. genitore restituirà solo il primo che corrisponde al selettore. – prodigitalson

+0

@prodigitalson - Non è giusto. Il metodo '.parent()' di jQuery esamina solo il genitore immediato. Se si passa un selettore e il genitore immediato non lo corrisponde, si ottiene un oggetto jQuery vuoto. – user113716

Problemi correlati