5
A
回答
3
假設下面的html:
<div class="collapsible">
<button>Hi</button>
</div>
你可以做這樣的事情:
$('.collapsible').click(function(e) {
if ($(this).children('button').css('pointer-events') == 'none') return;
//do collapse
});
這是由於按鈕樣式是指針的事件引起的或者可能是這樣的:
$('.collapsible').click(function(e) {
//do collapse
});
$('.collapsible button').click(function(e) {
if ($(this).css('pointer-events') == 'none')
e.stopPropagation();
});
+1
帶有'pointer-events:none'的元素不會觸發事件處理程序 – Oriol
1
正如@adeneo所說,如果你在孩子上使用pointer-events: none
,那麼父母的事件監聽器就無法知道目標是自己還是孩子。 這就像當您單擊段落中的某些文本時,事件偵聽器無法知道您是否單擊了文本或段落的填充。
然後,您可以使用
document.getElementById('outer').onclick = function(e) {
/* your code */
};
document.getElementById('outer').addEventListener('click', function(e) {
if(e.target !== this) {
e.stopPropagation();
}
}, true);
無pointer-events: none
。
這樣,你使用捕獲階段,所以你可以阻止兒童的事件處理程序的執行(如pointer-events: none
),但現在你可以區分用戶是否點擊你的元素或其子。
問題:你不能老版本的IE中使用捕捉階段。
優勢:因爲它不舊IE瀏覽器,你不必擔心像
e = e || window.event
e.target || e.srcElement
if (e.stopPropagation) { e.stopPropagation(); } else { e.calcelBubble=true; }
相關問題
- 1. 停止href事件冒泡
- 2. 停止冒泡GWT中的事件
- 3. 停止事件從冒泡的DOM
- 4. 殘疾人元素 - 不工作
- 5. 禁用輸入停止事件冒泡
- 6. 事件冒泡和停止傳播
- 7. 如何停止骨幹事件冒泡
- 8. 在WinForms中停止冒泡事件
- 9. 在Firefox中停止冒泡事件
- 10. stopPropagation()不停止事件冒泡?
- 11. 停止事件冒泡 - 提高性能?
- 12. WPF DataGridCell LostFocus事件停止冒泡DataGridRow
- 13. JavaScript - 停止冒泡
- 14. Raphael.JS,防止事件冒泡
- 15. knockoutjs:防止事件冒泡的元素沒有處理
- 16. 如何在刪除元素時防止冒泡的jQuery事件?
- 17. 關於事件冒泡和停止傳播,然後允許冒泡的困惑
- 18. 如何防止jQuery事件冒泡到父元素?
- 19. 如何防止重疊元素冒泡事件?
- 20. React的殘疾人按鈕
- 21. 冒泡事件。
- 22. C#FTP與CD殘疾人
- 23. 模擬殘疾人wmode
- 24. 如何使@ Html.EditorFor殘疾人
- 25. ScrollBarVisibility隱藏VS殘疾人
- 26. CSS殘疾人滾動
- 27. 殘疾人editmaskcontrol(PowerBuilder中)
- 28. 殘疾人ASP按鈕
- 29. 殘疾人複選框
- 30. 防止冒泡WPF TreeView的SelectedItemChanged事件
如果您向我們展示html,然後我們可以幫助:) – Archer
指針事件不是禁用元素的方式,它只是取消ls所有指針事件,並且對於你正在做的事情需要基礎元素上的指針事件很有幫助。 – adeneo
您需要e.stopPagagation() – Krishna