jquery firefox stopPropagation()
我将两个事件处理程序绑定到’keydown’上的输入字段。 如果已按下回车键,则第一个事件处理程序需要停止事件的传播,以使其不会触及第二个事件处理程序。 我是这样做的:
if (jQuery.browser.msie) { event.cancelBubble = true; } else { event.stopPropagation(); }
现在这一点并不能阻止IE或Firefox中的事件传播。 它命中第一个事件处理程序,然后也命中第二个事件处理程序。 但是,在第二个事件处理程序中,我实际上可以在IE的情况下检查是否(e.cancelBubble)。 有没有办法检查Firefox相同?
只需删除您的IE测试并使用此:
event.stopImmediatePropagation();
这将阻止其他事件在两个浏览器中触发。
event.stopPropagation()
将阻止事件冒泡,但不会阻止同一对象的其他事件处理程序触发。
要回答您的其他问题,如果您刚刚使用了event.stopPropagation()
,则可以在第二个处理程序中检查event.isPropagationStopped()
。
建议 :作为一般规则,jQuery完全抽象所有浏览器行为,为function提供单一接口。 如果您在运行jQuery函数之前发现自己正在运行if(jQuery.browser.msie)
,那么可能有一种更好的方式来运行它可以跨浏览器工作。 而且,当您确实需要测试时,您应该使用jQuery.support
来测试function而不是特定的浏览器嗅探。
- window.location.reload不适用于Firefox和Chrome
- 如果带有键盘触发器的字段出现错误,如何停止AJAX调用
- $(window).scroll(function()不能在firefox上运行?
- 使用firefox w / firebug,如何在浏览器中编写javascript并使用.js文件对象呢?
- 删除showModalDialog API
- jQuery.getJSON可以将域名的cookie放在它所做的请求的标题中吗?
- 如何使用Firefox调试器调试jQuery事件?
- Firefox ReferenceError:…未定义问题
- 如何使用jQuery将值记录到Firebug控制台?