我有一些大量嵌套的GUI控件-单击或更改它们时,或者我需要采取什么措施来阻止该事件继续深入DOM树时。它需要在所有浏览器上都能工作。

在这一点上,我有一些笨拙的JS代码:

//Do something in response to the original user action
//Leave it at that.
try {
        e.stopPropagation();
    }
    catch (ex) {

    }
    try {
        event.cancelBubble();
    }
    catch (ex) {

    }

    try {
        event.preventDefault();
    }
    catch (ex) { }
...


这确实有效,但是它闻起来并感觉不对(我个人讨厌空的捕获块)。我可以使用更简洁的X浏览器技巧吗?

最佳答案

如果您使用jQuery,那么event.stopPropagation()就可以正常工作。 jQuery统一了事件处理。

通常,如果您想测试特殊的浏览器方法,可以这样做:

if(event.stopPropagation) {
    event.stopPropagation();
}
else if...


jQuery就是这样做的。它为事件创建包装,并提供统一的接口。

事件对象的名称由您定义。事件对象作为第一个参数传递给事件处理程序。您必须设置事件处理程序以接受参数,例如:

$('selector').click(function(foo) { // could be event, e, bar, whatever you want
    foo.stopPropagation();
});


通常使用eevent

关于javascript - jQuery-在所有浏览器中停止事件冒泡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5103918/

10-12 12:56
查看更多