使用事件克隆HTML元素

时间:2012-02-17 23:15:43

标签: javascript jquery

我有一个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));              
    });

当我克隆这个元素时,我松开了鼠标悬停事件。如何确保事件也被克隆。

3 个答案:

答案 0 :(得分:3)

Clone接受一个布尔参数,当它为真(这不是默认值)时,保存数据和事件。你想要$actionImage.clone(true)

正如@Purmou所提到的,你也可以通过ondelegate绑定你的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以来,这是一个选择。