1

我需要将点击处理程序添加到动态添加的链接。我读过 JQuery 的 click 方法不适用于动态创建的元素(实际上我无法让它工作)。

我有以下代码:

$(this).find(ops.editbuttonselector).click(function(e) {

由于现在不推荐使用 .live 方法,因此我需要为此使用 .on 。根据这个线程和我对 jquery 的理解(这是有限的),我应该这样做:

selector = $(this).find(ops.editbuttonselector) 
$(document).on('click', selector, function(e) {

但这也不起作用,实际上之前的工作(现有元素)也停止工作。

有人可以指点我正确的语法。

提前致谢

4

2 回答 2

3

第二个参数.on()是选择器字符串,而不是 jQuery 对象:

$(document).on('click', ops.editbuttonselector, function(e) {
于 2012-10-23T18:23:49.137 回答
1

由于您使用 绑定它$(this),我假设您正在尝试在元素添加到 DOM 之后添加处理程序。如果是这种情况,那么您可以简单地执行以下操作,

//below is direct binding which is better than delegated event
$(this).find(ops.editbuttonselector).on('click', function(e) {

否则,如果this是执行下一行时存在于 DOM 中的父元素,

//this is delegated event binding method
$(this).on('click', ops.editbuttonselector, function(e) {

否则,您可以.on找到可能存在于 DOM 或文档对象中的最近的父级。

您可以阅读更多关于何时以及为什么应该绑定到文档对象https://stackoverflow.com/a/12824698/297641

于 2012-10-23T18:28:47.320 回答