多个jQuery.on()事件无法运行xBrowser(取决于顺序)
Multiple jQuery .on() events not working xBrowser (dependent on order)
为了支持Firefox,我使用"DOMMouseScroll"事件来代替鼠标滚轮。我不确定我为什么会出现以下行为:
以下内容将允许DOMMouseScroll在Firefox中工作,但我的滚动或鼠标滚轮事件不会触发。
$contents.on 'scroll, mousewheel, DOMMouseScroll', @handleScroll
但当我把绑定分离出来时,Chrome和Firefox中的一切都很好。
$contents.on 'scroll, mousewheel', @handleScroll
$contents.on 'DOMMouseScroll', @handleScroll
如果我重新排序如下,我会让chrome重新工作,但不会让firefox:
$contents.on 'scroll, DOMMouseScroll, mousewheel', @handleScroll
很明显,顺序很重要,鼠标滚轮是最后一个绑定,所以它可以在DDOMMouseScroll上工作,将它们分离是解决方案。我只是想知道为什么。
当我查看.on()的jQuery源代码时,我看到:
function (types, selector, data, fn, one) {
var type, origFn;
if (typeof types === "object") {
if (typeof selector !== "string") {
data = data || selector;
selector = undefined;
}
for (type in types) {
this.on(type, selector, data, types[type], one);
}
return this;
}
type-in-types循环不应该提供与创建单独的绑定相同的效果吗?
在on
方法中不应该有逗号:
$contents.on 'scroll mousewheel DOMMouseScroll', @handleScroll
在您的案例中,jQuery正在侦听类似scroll,
或DOMMouseScroll,
的事件。
jQuery文档:https://api.jquery.com/on/
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- jquery设置为使用参数运行
- 如何根据时间运行不同的脚本
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 将文本框链接到由按钮运行的javascript公式
- 为什么不是't运行此Javascript的Chrome
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 如何使用JS/nightwatchjs并行运行多个测试
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- 我的HTML按钮没有在Javascript中运行
- 多个jQuery.on()事件无法运行xBrowser(取决于顺序)