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