2017-02-14 76 views
-1

我已經創建了一個覆蓋,並在該覆蓋內有另一個div。我想在用戶點擊疊加部分時關閉疊加層,並且如果用戶單擊了子div,則不執行任何操作。我已經實現了關閉疊加功能。但問題是,即使用戶點擊了子div,它也會關閉疊加層。我怎樣才能解決這個問題?給點擊事件只給父div

<div id="overlay" onClick={this.props.hideOverlay}> 

       <div className="ques_preview_div"> 

       </div> 
</div> 

所以基本上,如果用戶在這個div中的某處點擊,覆蓋層應該不會關閉。

<div className="ques_preview_div"> 

</div> 
+1

粘貼更多的代碼幫助! – StateLess

+0

我認爲這可能是http://stackoverflow.com/questions/28511207/react-js-onclick-event-handler的重複 - 或者至少,這些問題的答案應該有助於解決這個問題(檢查event.target在點擊處理程序) – Connum

+0

你用什麼來「關閉」覆蓋? –

回答

0

我以前的答案沒有工作,所以我創建了一個CodePen

function childClick(event){ 
    event.stopPropagation() 
    console.log('child') 
} 

的問題是根據兒童的事件冒泡。因此,如果孩子被點擊,雖然它沒有onClick函數它仍然向上 - >父母onClick被調用。爲了防止這種情況,我們必須爲孩子添加一個onClick,並簡單地停止傳播()