jQuery 中的多个链式 .on('click') 事件侦听器
Multiple chained .on('click') event listeners in jQuery
我在轮播插件 (GitHub repo here) 上有几个 click
处理程序。
当我最初编码时,我忘记了 jQuery 链接:
$gallop.on("click", ".advance", function(){ [snip 1] })
$gallop.on("click", ".retreat", function(){ [snip 2] })
$gallop.on("click", ".autoplay", function(){ [snip 3] })
$gallop.on("click", ".picker", function(){ [snip 4] });
它们都在同一个 .gallop
元素上,所以我可以通过将它们链接在一起来改进代码:
$gallop
.on("click", ".advance", function(){ [snip 1] })
.on("click", ".retreat", function(){ [snip 2] })
.on("click", ".autoplay", function(){ [snip 3] })
.on("click", ".picker", function(){ [snip 4] });
他们也都在监听 click
事件:只是每个处理程序的选择器不同。有没有办法将多个 selector/handler 项目放在同一个 .on()
方法中?是这样的吗?
$gallop
.on("click",
".advance", function(){ [snip 1] },
".retreat", function(){ [snip 2] },
".autoplay", function(){ [snip 3] },
".picker", function(){ [snip 4] });
没有内置方法可以在一个 .on()
调用中指定多个单独的 selector/handler 对。
如果您想为每个不同的选择器使用不同的事件处理函数,那么您的第二个选项可能是最干净的方法。
您可以制作一个巨大的事件处理程序,然后根据目标进行分支(但除非您在所有处理程序中有一堆通用代码,否则这可能不是最干净的方法):
$gallop.on("click", ".advance, .retreat, .autoplay, .picker", function(e) {
// look at the class on e.target and decide what to do
})
我在轮播插件 (GitHub repo here) 上有几个 click
处理程序。
当我最初编码时,我忘记了 jQuery 链接:
$gallop.on("click", ".advance", function(){ [snip 1] })
$gallop.on("click", ".retreat", function(){ [snip 2] })
$gallop.on("click", ".autoplay", function(){ [snip 3] })
$gallop.on("click", ".picker", function(){ [snip 4] });
它们都在同一个 .gallop
元素上,所以我可以通过将它们链接在一起来改进代码:
$gallop
.on("click", ".advance", function(){ [snip 1] })
.on("click", ".retreat", function(){ [snip 2] })
.on("click", ".autoplay", function(){ [snip 3] })
.on("click", ".picker", function(){ [snip 4] });
他们也都在监听 click
事件:只是每个处理程序的选择器不同。有没有办法将多个 selector/handler 项目放在同一个 .on()
方法中?是这样的吗?
$gallop
.on("click",
".advance", function(){ [snip 1] },
".retreat", function(){ [snip 2] },
".autoplay", function(){ [snip 3] },
".picker", function(){ [snip 4] });
没有内置方法可以在一个 .on()
调用中指定多个单独的 selector/handler 对。
如果您想为每个不同的选择器使用不同的事件处理函数,那么您的第二个选项可能是最干净的方法。
您可以制作一个巨大的事件处理程序,然后根据目标进行分支(但除非您在所有处理程序中有一堆通用代码,否则这可能不是最干净的方法):
$gallop.on("click", ".advance, .retreat, .autoplay, .picker", function(e) {
// look at the class on e.target and decide what to do
})