2010-03-09 28 views
5

Tengo una lista ordenable con la que estoy trabajando que puede tener elementos añadidos y eliminados por otra secuencia de comandos a través de jquery y tengo un problema extraño. Estos elementos recién generados parecen ser arrastrables, pero en realidad no se ordenan a menos que los tenga ya allí en la carga de la página. Intenté usar sortable ('refresh'), pero parece no tener ningún efecto.jquery ui sortable ('refresh') no funciona!

+0

He estado teniendo este problema también. Ejecutar la actualización en un selector de clase no agrega la clase 'ui-sortable' en el DOM. ¿Alguna vez resolviste esto? – dmrnj

+0

No recuerdo. Creo que terminé desguazándolo y haciendo algo más. –

Respuesta

2

Para darle la oportunidad de cerrar esta pregunta, y solo como referencia, en caso de que alguien más tropiece con esto, esto parece funcionar bien en el último jquery-ui. Aquí hay un jsfiddle: http://jsfiddle.net/fordlover49/mVrGA/

+0

No es exactamente una "solución", pero el problema ya no existe. Esa información es equivalente sin embargo. –

+0

Este no es un período de solución. Su ejemplo tiene dos listas donde todos los elementos ya se han inicializado como ordenables. Esta pregunta es sobre elementos que se agregan a una lista ya inicializada. – Mario

+0

No fueron todos inicializados como ordenables. Tenga en cuenta que después de que se inicializó, agrega elementos adicionales a la lista desordenada. Para probar esto, simplemente haga un setTimeout alrededor del código que agrega los elementos de la lista "añadidos" y verá que la lista se puede clasificar sin los nuevos elementos, y después de los fuegos de tiempo de espera, los nuevos elementos se pueden ordenar automáticamente. Como mencioné en mi respuesta original, no lo solucioné, solo estaba observando que el equipo de jQuery-ui solucionó el problema en la última versión. – PriorityMark

2

Tuve un problema similar. Una vez que agregué un nuevo elemento a la lista ordenable, ya no se podía arrastrar nada. Mi solución fue llamar al método destroy:

$(".selector").sortable("destroy"); 

primero y luego hacerlo de nuevo puede ordenar.