我几乎在我目前的应用程序中使用过的所有事件都打电话给e.stopPropagation()
。有没有什么办法可以停止每个事件的传播,而无需在每个函数体的开始处显式调用方法?停止传播所有事件
Q
停止传播所有事件
8
A
回答
6
否它不能被从全球
中声明的方法event.stopPropagation()
停止事件的冒泡到父元素,防止任何父事件处理程序被执行。
例如,如果在附加点击方法的DIV或FORM内附加了点击方法的链接,则会阻止DIV或FORM点击方法触发。
-1
试试这个。 它需要jQuery。
$('*').on('click', function(e){
e.stopPropagation();
});
+0
@ Rakesh..it只会停止点击事件关于鼠标事件和更改事件? –
7
你可以斌的所有事件(删除你不需要一个人的):
$('*').bind('blur change click dblclick error focus focusin focusout hover keydown keypress keyup load mousedown mouseenter mouseleave mousemove mouseout mouseover mouseup resize scroll select submit', function(event){
event.stopPropagation();
});
0
看看可能发生的事件要建立在Alex的响应,在香草JS和几个更多的事件(我可以找到所有的键盘和点击事件):
/**
* Disable all user events on the page
*
* @returns {function()} a function to cancel the disabling
*/
const disableAllUserEvents =() => {
const events = ["click", "contextmenu", "dblclick", "mousedown", "mouseenter", "mouseleave", "mousemove",
"mouseover", "mouseout", "mouseup", "keydown", "keypress", "keyup", "blur", "change", "focus", "focusin",
"focusout", "input", "invalid", "reset", "search", "select", "submit", "drag", "dragend", "dragenter",
"dragleave", "dragover", "dragstart", "drop", "copy", "cut", "paste", "mousewheel", "wheel", "touchcancel",
"touchend", "touchmove", "touchstart"];
const handler = event => {
event.stopPropagation();
event.preventDefault();
return false;
};
for (let i = 0, l = events.length; i < l; i++) {
document.addEventListener(events[i], handler, true);
}
return() => {
for (let i = 0, l = events.length; i < l; i++) {
document.removeEventListener(events[i], handler, true);
}
};
};
编辑:只要知道这不是一个安全的解决方案,因为这些事件可以检索和取消:Use Chrome's webkit inspector to remove an event listener
相关问题
- 1. as3停止事件传播
- 2. 停止事件传播 - salesforce1
- 3. 停止javascript事件传播
- 4. Java事件传播停止
- 5. 角停止事件传播
- 6. JQuery UI;停止传播可选事件
- 7. 学说2停止事件传播
- 8. 停止事件传播焦点JQuery
- 9. 事件冒泡和停止传播
- 10. 停止JS-事件传播单击
- 11. Angular On点击停止传播事件
- 12. 如何停止传播ajaxerror事件
- 13. 在Corona SDK中停止事件传播
- 14. Openlayers 3停止事件传播
- 15. 模糊功能事件停止传播
- 16. 如何停止hammer.js事件传播
- 17. jQuery UI滑块停止事件传播
- 18. 停止传播
- 19. 停止传播
- 20. 停止传播
- 21. 事件停止与儿童事件传播问题
- 22. 停止JQuery的事件传播的特定事件处理
- 23. jquery dblclick事件不能停止事件传播
- 24. 如何停止html属性中onclick事件的事件传播?
- 25. 在NativeScript中停止事件传播ios点击事件
- 26. JavaScript:停止事件传播是否有任何性能优势?
- 27. 防止事件传播
- 28. 防止默认操作,但不要停止传播事件
- 29. jQuery停止事件传播 - 不止一次
- 30. 停止传播jquery
'stopPropagation()'是'Event'对象的函数。它不能在全球范围内调用。 – BenM
stopPropagation()防止事件冒泡DOM树,阻止任何父处理程序被通知事件。 –
这里有一篇关于如何在运行时动态获取所有支持的事件类型的有趣帖子,所以您不必手动创建列表:http://stackoverflow.com/questions/5848598/jquery-how-can-i -bind-all-events-on-a-dom-element – Jasper