2013-08-27 48 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

相關問題