我有一个HTML图片元素,如下所示:
var actionImage = $("<img></img>");
actionImage.attr("id", getRandomString());
actionImage.attr("width", "16").attr("height", "16").attr("src", "Action_normal.png");
actionImage.attr("style", "cursor: hand;");
actionImage.bind('mouseover', function() {
OnMouseOver($(this).get(0));
});
当我克隆这个元素时,我松开了鼠标悬停事件。如何确保事件也被克隆。
答案 0 :(得分:3)
Clone接受一个布尔参数,当它为真(这不是默认值)时,保存数据和事件。你想要$actionImage.clone(true)
。
正如@Purmou所提到的,你也可以通过on
或delegate
绑定你的JS事件来做到这一点,以避免这个问题。
答案 1 :(得分:1)
在JQuery中将true
传递给clone()
方法时,也会复制事件处理程序。所以只需使用$("#myElementId").clone(true)
。
答案 2 :(得分:1)
.clone
有一个[withDataAndEvents]
选项,可以设置为true
:
<强> withDataAndEvents 强>
一个布尔值,指示事件处理程序是否应该 与元素一起复制。从jQuery 1.4开始,元素数据将会 也被复制。
来源:http://api.jquery.com/clone/
自1.0以来,这是一个选择。