2017-03-06 57 views
0

陣營event.target是不是我設置的事件監聽器上

const onClick = (e) => { 
 
    console.log(e.target); 
 
} 
 
const App =() => (
 
    <button 
 
    name={'YES'} 
 
    className="btn waves-effect waves-light left blue darken-4" 
 
    onClick={onClick} 
 
    > 
 
    Yes 
 
    <i className='material-icons left'>done</i> 
 
    </button> 
 
); 
 

 
ReactDOM.render(<App />, document.querySelector("#app"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.8/react-dom.min.js"></script> 
 
<div id="app">

我需要e.target是在所有可能的情況<button>,但是當我點擊<i>元素(或任何其他元素看起來),目標分別是<i>。它可能不是錯誤,但我不知道該怎麼做。

+0

這被稱爲事件冒泡。 http://stackoverflow.com/questions/4616694/what-is-event-bubbling-and-capturing。爲了在這裏幫助你,我們需要知道你爲什麼要讓目標成爲按鈕,而不是如何去做。 – azium

回答

2

使用event.currentTarget,它將始終是添加處理程序的元素。 event.target將始終是發生事件的元素。

<button 
    name={answerTypes.YES} 
    className="btn waves-effect waves-light left blue darken-4" 
    onClick={this.onClick} 
> 
    Yes 
    <i className='material-icons left'>done</i> 
</button> 

onClick(e) { 
    console.log(e.currentTarget); 
} 
+1

是的。它完美的作品。這正是我需要的!非常感謝你;) – Piliponful