首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery firefox stopPropagation()

jquery firefox stopPropagation()
EN

Stack Overflow用户
提问于 2010-01-09 02:11:13
回答 1查看 7.3K关注 0票数 5

我将两个事件处理程序绑定到'keydown‘上的一个输入字段。如果已按下Enter键,则第一个事件处理程序需要停止事件的传播,以便它不会命中第二个事件处理程序。我是这样做的:

代码语言:javascript
复制
if (jQuery.browser.msie) {
                    event.cancelBubble = true;
                } else {
                    event.stopPropagation();
                }

现在,在IE或Firefox中,单凭这一点并不能停止事件传播。它命中第一个事件处理程序,然后也命中第二个事件处理程序。但是,在第二个事件处理程序中,我实际上可以检查IE中是否存在(e.cancelBubble)。有没有办法用Firefox来验证这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-09 02:24:18

只需删除您的IE测试,并使用以下代码:

代码语言:javascript
复制
event.stopImmediatePropagation();

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

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

为了回答您的另一个问题,如果您只使用了event.stopPropagation(),那么可以在第二个处理程序中检查event.isPropagationStopped()

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

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2029654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档