Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery中的多个链式.on(';单击';)事件侦听器_Javascript_Jquery_Performance_Jquery Chaining - Fatal编程技术网

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
})