Create元素自动将事件处理程序注册为可拖动

时间:2013-08-27 22:21:51

标签: jquery

说我有一些这样的代码,在$(document).ready():

上调用
$(".banana").draggable();

$("body").on("click", "button", function(e){
    $(".banana:first").clone().text('new text').;
});

<div class="container">
   <button>add</button>
   <div class="banana">banana 1</div>
</div>

所以,问题是当我点击创建div.banana的副本时。它不会自动为draggable注册事件处理程序。我尝试了一些东西但是我 确定这不是一个好方法:jsfiddle

1 个答案:

答案 0 :(得分:0)

您的新克隆元素全部为position: absolute,因此它们可以在彼此之上。

如果你创建新元素使它们不是position: absolute并修改每个元素以使它们不同并且你可以将它们彼此区分开来,那么修改后的jsFiddle似乎对我来说很好:{{3 }}

jQuery(document).ready(function(){
    $(".banana").draggable();

    $(".banana").click(function(e){
        alert("Hello original");
    });

    var cntr = 1;

    $("body").on("click", "button", function(e){
        $(".banana:first").clone().text('new text ' + cntr)
            .data("item", cntr)
            .appendTo(".container").draggable()
            .click(function(e){
                alert("Hello new " + $(this).data("item"));
            });
        ++cntr;
    });

});