2014-12-30 46 views
1

我在success處理像一個Ajax請求:的jQuery,添加可拖動追加對象

$.ajax({ 
     type: "POST", 
     url: "{{ path('getevents') }}", 
     data: {start: start, end : end}, 
     success: function (data) { 

      for (var i = 0; i < data['rdv'].length; i++) { 
       var divRdv = '<div>My div</div>'; 
       $('myElement').append(divRdv); 

       $(divRdv).draggable(); // THIS DOESN'T WORK 
      } 
     }, 
     error: function (xhr, status, error) { 
      console.log(xhr.responseText); 
     } 
    }); 

所以,在一個循環,我需要創建一個div divRdv,追加這個div來myElement,和之後,我想這個div可拖動。

我該怎麼辦?

我試圖將draggable添加到每個div,一個接一個,有一種方法可以在一次中將draggable添加到多個元素中?

+1

你提供的jsfiddle好嗎? – Roman

+2

這是你的真實碼嗎?我的意思是''myElement''應該是按類或id的選擇器? – vaso123

回答

1

你可以一個類添加到您可拖動的div並呼籲所有的人都拖動,這樣的:

$.ajax({ 
     type: "POST", 
     url: "{{ path('getevents') }}", 
     data: {start: start, end : end}, 
     success: function (data) { 
      for (var i = 0; i < data['rdv'].length; i++) { 
       var divRdv = '<div class="draggable">My div</div>'; 
       $('myElement').append(divRdv); 
      } 
      $('.draggable').draggable(); 
     }, 
     error: function (xhr, status, error) { 
      console.log(xhr.responseText); 
     } 
    }); 
5

那是因爲你已經添加在DOM的代碼通過添加它。但是因爲它不是一個jQuery對象,所以它只是,只是將添加爲HTML,而您的變量只是保存文本,而不是標識dom元素的jquery對象。

所以,當你做可拖動的調用時,你是在一個全新的jquery(也就是dom)對象上做的,而不是你添加的那個。

這樣做:

var divRdv = $('<div>My div</div>'); 
$('myElement').append(divRdv); 

divRdv.draggable(); // THIS SHOULD WORK :) 
+0

哦,謝謝,我的不好:) –

-1

類似A.拉瑪的答案,但隨着的jsfiddle:http://jsfiddle.net/4bztfpyf/1/

for (var i = 0; i < 5; i++) { 
    var divRdv = $('<div>My div</div>'); 
    $('body').append(divRdv); 

    divRdv.draggable(); // THIS WORKS 
}