2017-07-11 83 views
0

時防止父點擊事件如果你想有一個子元素中點擊不要泡到其父母,你可以使用停止冒泡stopPropagation如何從孩子拖到父

<div class="parent"> 
    <div class="child"></div> 
</div> 

document.querySelector('.parent').addEventListener('click',()=> { .. } 
document.querySelector('.child').addEventListener('click',()=> { .. } 

DEMO

但當點擊開始於孩子內部並在外部結束時,如何防止父母點擊。換句話說:mousedown孩子,那麼mousemove,該移動指針孩子之外(但父內),然後mouseup,在這種情況下,我不想

對我來說最重要的事情,是裏面父母點擊,有什麼建議?

更新:如果您還記得mousedown目標,您可以在父級點擊回調中使用此項:DEMO。但我希望有更好的解決方案

+1

注意firefox中的行爲與chrome不同。在mouseup發生時,父級點擊不會在Firefox中觸發 – charlietfl

+0

我在Chrome中進行測試:)但FF顯示我需要的行爲! –

+0

對......我想到了。自從我第一次在Firefox中檢查演示後,我開始感到困惑,並且在那裏似乎很好 – charlietfl

回答

0

我希望我明白你的問題。您正在尋找一種事件或某種類型的方法,可以讓您始終查找單擊的第一個值。 e.stopPropagation()&捕獲屬性作爲事件偵聽器的第三個參數也不起作用。

我在做什麼的同時會在偵聽器範圍外添加一個額外的變量。 onClick可以將該變量分配給您點擊的任何項目。

或者您可以將您的點擊處理程序修改爲'mousedown.'這樣,用戶拖動它們首次點擊的部分就沒有關係。第二個用戶停下來,他們將觸發該事件。