【发布时间】:2014-03-28 12:35:17
【问题描述】:
对每个事件都使用 jQuery 的 .on() 事件处理程序是否被认为是不好的做法?
以前,我的代码包含这样的脚本:
$('#cartButton').click(function(){
openCart();
});
不过我最近开始使用InstantClick(一个 pjax jQuery 插件)。
现在我的脚本都不起作用了。我理解为什么会发生这种情况,但我不能用InstantClick.on('change', function(){ 标签包装我的代码,因为这意味着我的代码开始重复自己。例如,单击购物车按钮将多次运行openCart() 函数。所以为了解决这个问题,我将我的所有功能都更改为这样的:
$(document).on('click', '#cartButton', function(){
openCart();
});
我很好奇这是否会增加加载时间并导致过度紧张。对我的代码中的每个事件都使用 on() 事件处理程序是不好的做法吗?
【问题讨论】:
-
我想
click()函数在后台使用on()函数。 -
on 用于委托,无论如何,您的代码是否使用“on”?
-
尝试让点击事件更接近该元素所在的元素比将所有内容都连接到文档会更好。
-
正如 epascarello 所说,您不需要将侦听器连接到文档。您可以在 JS 加载时使用 DOM 中存在的元素的第一个父元素。
标签: javascript jquery pjax event-delegation