我的页面上有一些<tr>
元素,其中一个click()
事件附加到每个元素内部的图像上。我使用此代码
$(this).clone(true).appendTo("table#foo");
执行以下操作:
- 将那些 s 复制
<tr>
到不同的表中 - 保留
<tr>
s 内图像上的点击事件(由于true
参数)
所有这些工作正常。现在我为这些 s 添加了一个jQuery Listen事件<tr>
,这样用户就不必精确瞄准:他/她可以单击 s 上的任意位置<tr>
,我可以将单击传递给图像。
它的编码如下:
$('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() 插件的作者提出了不同的策略 - 请参阅下面的答案。