jquery firefox stopPropagation()

时间:2010-01-08 18:11:13

标签: jquery firefox event-handling

我将两个事件处理程序绑定到'keydown'上的输入字段。如果已按下回车键,则第一个事件处理程序需要停止事件的传播,以使其不会触及第二个事件处理程序。我是这样做的:

if (jQuery.browser.msie) {
                    event.cancelBubble = true;
                } else {
                    event.stopPropagation();
                }

现在,仅此一项并不能阻止IE或Firefox中的事件传播。它命中第一个事件处理程序,然后命中第二个事件处理程序。但是,在第二个事件处理程序中,我实际上可以在IE的情况下检查是否(e.cancelBubble)。有没有办法用Firefox检查相同的内容?

1 个答案:

答案 0 :(得分:13)

只需删除您的IE测试并使用:

event.stopImmediatePropagation();

这会阻止其他事件在两个浏览器中触发。

event.stopPropagation()会阻止事件冒泡,但不会阻止同一对象的其他事件处理程序触发。

要回答您的其他问题,如果您刚使用event.stopPropagation(),则可以在第二个处理程序中检查event.isPropagationStopped()

建议:作为一般规则,jQuery完全抽象所有浏览器行为,为功能提供单一界面。如果您在运行jQuery函数之前发现自己正在运行if(jQuery.browser.msie),那么可能有一种更好的方法来运行它可以跨浏览器工作。而且,当您确实需要测试时,您应该使用jQuery.support来测试不是特定浏览器嗅探的功能。