如何克隆jQuery侦听插件事件?
我的页面上有一些如何克隆jQuery侦听插件事件?,jquery,jquery-plugins,clone,listen,Jquery,Jquery Plugins,Clone,Listen,我的页面上有一些元素,每个元素中都有一个click()事件附加到一个图像上。我使用这个代码 $(this).clone(true).appendTo("table#foo"); 要执行以下操作: 将这些复制到另一个表中 保留s内图像上的单击事件(因为true参数) 所有这些都很好。现在,我在这些中添加了一个事件,这样用户就不必精确瞄准:他/她可以单击上的任何位置,我可以将单击传递到图像 代码是这样的: $('tr.record').listen('click','td'
元素,每个元素中都有一个click()
事件附加到一个图像上。我使用这个代码
$(this).clone(true).appendTo("table#foo");
要执行以下操作:
- 将这些
复制到另一个表中 - 保留
s内图像上的单击事件(因为
参数)true
中添加了一个事件,这样用户就不必精确瞄准:他/她可以单击
上的任何位置,我可以将单击传递到图像
代码是这样的:
$('tr.record').listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});
listen()事件在原始项上正常工作,但在克隆项上listen()事件失败。图像的单击事件仍然正常工作
以下是Firebug告诉我的:
m(this, e.type) is undefined
…它引用jquery.listen-1.0.3-min.js的第9行
如何使listen()事件在克隆的元素上工作?
更新
默认情况下,jQuery不会复制克隆元素上的事件,但会执行此操作
与此同时,listen()插件的作者提出了一种不同的策略——请参见下面我的答案。listen()插件的创建者Ariel Flesler通过电子邮件向我提出了以下建议: “我认为这可以用另一种方式来解决。倾听(和 事件委派)实际上是为了避免对事件的所有复制 新元素。” “您可以简单地执行以下操作:” “甚至: 第一个示例将使用表作为侦听器。在第二个示例中 使用了
标记。因此,无论您添加新的td/tr/表,它都将
listen()插件的创建者Ariel Flesler通过电子邮件给了我以下建议: “我认为这可以用另一种方式来解决。倾听(和 事件委派)实际上是为了避免对事件的所有复制 新元素。” “您可以简单地执行以下操作:” “甚至: 第一个示例将使用表作为侦听器。在第二个示例中 使用了
标记。因此,无论您添加新的td/tr/表,它都将
仍然有效。”
$('table#foo').listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});
$.listen('click','td',function(){
$(this).parent().find("img.clickable").click();
});