在jQuery中为动态加载项附加事件处理程序,最佳实践?

时间:2014-03-04 10:33:26

标签: javascript jquery ajax

我有一个自定义插件,它本质上是一个灯箱。我使用$('a.lightbox').lightbox();对其进行初始化,并使用$(this).on('click', function);附加事件处理程序。

在1.9之前,您可以使用.selector然后执行此操作$(document).on('click', $(this).selector, function);,以便将事件附加到所有当前项目和未来项目,例如通过AJAX动态插入项目。

1.9之后,因为.selector被折旧,所以建议如果你需要选择器然后作为选项解析它,例如:$('a.lightbox').lightbox({selector: 'a.lightbox');虽然这很难看,但它是推荐的解决方案正如jQuery文档中所述。

这会产生的问题是,不是通过on()方法简单地使用不同的选择器值的情况,更多的是你必须改变两个方面,例如:

// For Live Events
$(document).on('click', option.selector, function);

// For Non-Live Events
$(this).on('click', null, function);

我的问题是:我的插件是否应该负责并允许动态输入的项目,或者是否应该在脚本中插入新项目以重新初始化灯箱插件重新初始化有任何重大的开销吗?

希望这是有道理的,并希望这是这类问题的正确交换。

0 个答案:

没有答案