2009-11-04 20 views
10

Estoy agregando elementos de lista a una página dinámicamente con $ .get, y luego anexándolos al elemento OL. Muy habitual en este punto.jQuery + ordenable + en vivo

Pero jQuery no tiene conocimiento de estos nuevos elementos cuando se cargan en la página, y no los puedo hacer para ordenarlos.

he hecho algunos ensayos con jQuery en vivo, pero no llegar a ninguna parte de la pizca que ...

Respuesta

16

no parece El método de .sortable()refresh reconocer li 's, que no se agregan a través de las funciones .sortable().

Intente agregar su código de inicialización .sortable() en una función que llame en el documento listo Y en su código donde agrega dinámicamente li.

En lugar de:

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

intentar algo como:

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

No es solo el LI, básicamente es todo, pero el enfoque es correcto y funciona. –

0

en la cola de su código solo agregue .sortable({}); con todos sus parámetros respecificados. Probablemente haya una forma de hacerlo sin duplicar el código mediante el uso de una función o algo así, pero al menos esto funciona.

$('#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

me encontré con esta solución y trabajar bien para mí.

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