2013-08-27 42 views
-1

说我有一些像这样的代码,这就是所谓的$(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的副本。它不会自动注册可拖动的事件处理程序。我尝试了一些,但我是 肯定这不是一个好方法:jsfiddle

+0

您可以在左上角,所以你的代码实际工作设定的jsfiddle jQuery框架。 – Gigo

+0

目前还不清楚你在问什么。 – jfriend00

+0

我知道它的工作。但这是我手动添加到它的方式。我想知道有没有人知道如何新元素自动注册可拖动 – haind

回答

0

你的新克隆元素都是position: absolute,所以他们都是在另一个之上。

如果你让你的新元素,使他们不position: absolute和修改各部分,使得它们是不同的,你可以从它们彼此区分开,修改后的jsfiddle似乎为我在这里工作的罚款:http://jsfiddle.net/jfriend00/Q8VaT/

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; 
    }); 

}); 
+0

$ jfriend00。它不应该。如果有一些事件处理绑定到'.banana'。然后,我必须手动添加到它 – haind

+0

@haind - 请参阅我的答案的最新更新。 – jfriend00

+0

这不是我所关心的。也许你不清楚。我希望我点击创建新的元素。所以,新元素已经能够拖拽和点击它,它会提醒。你不需要注册事件处理程序再次[的jsfiddle(http://jsfiddle.net/hainguyenduc/N9v3Y/) – haind

相关问题