2009-11-04 24 views
10

Liste öğelerini dinamik olarak $ .get ile bir sayfaya ekliyorum ve ardından OL öğesine ekliyorum. Bu noktaya oldukça normal.jQuery + Sortable + live

Ancak jQuery, sayfaya yüklendiklerinde bu yeni öğelerin farkında değildir ve bunları sıralanabilir hale getiremiyorum.

jQuery Live ile bazı denemeler yapılmış, ancak bir sonuç elde edemedik

cevap

16

.sortable() ait refresh yöntem .sortable() fonksiyonları ile eklenmiş DEĞİLDİR li 's tanımak görünmüyor.

.sortable() başlatma kodunuzu, belgeye hazır olarak çağırdığınız bir işleve VE li 'lerin dinamik olarak eklediğiniz kodu girmeye çalışın.

yerine:

jQuery(document).ready(function() { 
    jQuery("#mySortableOL").sortable({ 
     ... 
    }); 
} 
... 
jQuery("#mySortableOL").append(...); 
jQuery("#mySortableOL").sortable("refresh"); 

gibi bir şey deneyin: Bu çözümü ve benim için iyi çalışıyor bulundu

jQuery(document).ready(function() { 
    jQuery("#mySortableOL").doSort(); 
} 
... 
jQuery("#mySortableOL").append(...); 
doSort(); 
... 
function doSort(){ 
    jQuery("#mySortableOL").sortable({ 
     ... 
    }); 
} 
+1

Sadece LI değil, temelde her şey, ama yaklaşım doğru ve çalışıyor. –

0

kodunuzun kuyruk ucunda, tüm parametrelerinizle birlikte .sortable({}); ekleyiniz. Muhtemelen bir işlev veya bir şey kullanarak kodunuzu çoğaltmadan bunu yapmak için bir yol var, ama en azından bu çalışır.

$('#List').live('click',function(e){ 

var myHTMLcode = '<li>New Item</li>' 

myHTMLcode.appendTo('#List').sortable({ 
items : 'li', 
axis : 'xy',  

update : function(event, ui){SPECIFIC Sortable FUNCTION CODE HERE}).fadeIn(); 
)}; 
-2

.

makesortable = function(){ 
     $("#mylist").sortable({ 
      ... 
     }) 
     }; 
... 
// after list refresh : 
makesortable(); 
İlgili konular