2015-12-18 12 views
16

ho parte di un componente di reagire in questo modo:Reagire - come catturare i bambini evento onclick del solo genitore e non

var headerElement = someBoolean ? <input/> : 'some string'; 
return <th onClick={this._onHeaderClick}>{headerElement}</th>; 

E un gestore click per l'elemento th:

_onHeaderClick(event) { 
    event.preventDefault(); 
    console.log(event.target); 
}, 

voglio per catturare l'elemento de. Funziona bene quando headerElement è 'qualche stringa', ma quando è un elemento di input, l'elemento di input è quello a cui fa riferimento nel campo event.target. Qual è il modo migliore per raggiungere questo obiettivo?

risposta

31

Dal momento che si sono vincolanti per il gestore th è possibile utilizzare la proprietà currentTarget. La proprietà target si riferisce all'elemento che ha inviato l'evento.

_onHeaderClick(event) { 
    event.preventDefault(); 
    console.log(event.currentTarget); 
} 
+1

Che ha funzionato magnificamente, accetterei la risposta non appena mi fosse permesso. –

3

Ti piace?

event.target.parentNode 
+1

Che sembra un po 'ingombrante. Dovrei fare le convalide prima. –

4

Dateci

_onHeaderClick(event) { 
    event.preventDefault(); 
    if(event.target === event.currentTarget) { 
     // handle 
    } 
} 
Problemi correlati