Javascript jQuery中的多个链式.on(';单击';)事件侦听器
我在旋转木马插件()上有几个Javascript jQuery中的多个链式.on(';单击';)事件侦听器,javascript,jquery,performance,jquery-chaining,Javascript,Jquery,Performance,Jquery Chaining,我在旋转木马插件()上有几个单击处理程序 最初编写代码时,我忘记了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", fun
单击处理程序
最初编写代码时,我忘记了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
事件:只有选择器对于每个处理程序是不同的。有没有办法将多个选择器/处理程序项放在同一个.on()
方法中?像这样的
$gallop
.on("click",
".advance", function(){ [snip 1] },
".retreat", function(){ [snip 2] },
".autoplay", function(){ [snip 3] },
".picker", function(){ [snip 4] });
没有内置的方法在一个.on()
调用中指定多个单独的选择器/处理程序对
如果您希望为每个不同的选择器提供不同的事件处理功能,那么您的第二个选项可能是最干净的方法
您可以创建一个大型事件处理程序,然后根据目标进行分支(但是,除非所有处理程序中都有一堆公共代码,否则这可能不是最干净的方法):
您可以使用事件委派吗?那么,也许可以通过查看event.target来确定单击了哪个?您有代码片段吗?@cgatian-这已经是事件委派。确定。好吧,我想你刚才用我说的回答了我的问题..在链接到GitHub的项目中可以找到问题中提供的代码片段。
$gallop.on("click", ".advance, .retreat, .autoplay, .picker", function(e) {
// look at the class on e.target and decide what to do
})