【发布时间】:2015-04-09 22:38:12
【问题描述】:
我在轮播插件 (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 事件:只有每个处理程序的选择器不同。有没有办法将多个选择器/处理程序项放在同一个 .on() 方法中?像这样?
$gallop
.on("click",
".advance", function(){ [snip 1] },
".retreat", function(){ [snip 2] },
".autoplay", function(){ [snip 3] },
".picker", function(){ [snip 4] });
【问题讨论】:
-
你能使用事件委托吗?所以也许查看 event.target 以确定哪个被点击了?你有代码sn-p吗?
-
@cgatian - 这已经是事件委托了。
-
好的。好吧,我猜你只是用我所说的话提供了一个答案..
-
问题中提供的代码 sn-ps 可在链接到的 GitHub 项目上找到。
标签: javascript jquery performance jquery-chaining