2009-07-27 20 views
21

Tengo el siguiente código que funciona, aunque funciona bastante lento, creo. Lo que quiero hacer es permitir que <li> 's se mueva libremente bajo los <ul>'s existentes o subirlos un nivel. También quiero poder crear jerarquías así que si arrastraste un <li> debajo de otro <li> que crearía una jerarquía. Creo que en ese sentido tendría que renderizar <ul> debajo de cada <li> por si acaso. Solo quiero limitarlo a 2 o 3 niveles de profundidad.jQuery anidado ordenable - Mover los elementos LI dentro de todos los UL disponibles

$("#sort_list").sortable({ 
    containment: 'parent',                      
    axis: 'y', 
    revert: true, 
    opacity: 0.8 
}); 
$(".sub_list").sortable({ 
    containment: 'parent', 
    axis: 'y', 
    revert: true, 
    opacity: 0.8, 
}); 
$("#sort_list").disableSelection(); 

<ul id="sort_list"> 
    <li>one</li> 
    <li>two 
    <ul class="sub_list"> 
    <li>sub one</li> 
    <li>sub two</li> 
    </ul> 
    </li> 
    <li>three</li> 
    <li>four</li> 
</ul> 

Respuesta

40

excelente respuesta a esto es

https://github.com/ilikenwf/nestedSortable

Me alegro de que lo he encontrado. jstree era demasiado pesado para mí.

+3

Es un poco tarde pero creo que esto podría ser! Buen hallazgo! – Jon

+2

Éste ya no se mantiene – Tom

+0

@Tom Parece que alguien más se hizo cargo del desarrollo. – gorn

1

Lo más probable es clasificable funcionalidad de la biblioteca jQuery UI no es tan configurable (es muy rudimentaria, destinado a ordenar listas un nivel de profundidad). Sería mejor simplemente usar uno de los plug-ins de árbol que admiten arrastrar y soltar.

El widget de árbol de jQuery UI es in development, pero se puede usar uno de los siguientes complementos:

http://www.jstree.com/

http://abeautifulsite.net/notebook/58

http://news.kg/wp-content/uploads/tree/

http://bassistance.de/jquery-plugins/jquery-plugin-treeview/

+2

Ninguno de los que ofrecen al usuario arrastrar y soltar para crear una jerarquía o diferente orden de los elementos. Quiero la idea ordenable pero con opciones de jerarquía añadidas con la capacidad de guardar de nuevo en el servidor. – Jon

+0

¿Revisaste el soporte para arrastrar/soltar en jstree.com? Parece que tiene lo que necesitas. Sin embargo, no tienen una demostración en funcionamiento. Tendría que descargarlo y configurarlo usted mismo. –

6

he utilizado JQuery Interface plugin cual fue fácil de configurar y funcionó bastante bien para esa tarea (consulte el demo), pero quería algo más ligero y que no requieren complementos adicionales.

Incluso jQuery se puede ordenar de interfaz de usuario de la biblioteca es una especie de rudimentaria todavía se puede lograr de alguna manera que la funcionalidad:

$("ul").sortable({ 
items: '> li', 
axis: 'y', 
update: function (e, ui) { 
    ... 
} 

Esto le permitirá ordenar "li" bajo cualquier "ul" (si recuerdo correctamente). Sin embargo, no le permitirá mover elementos "li" de una "ul" a otra "ul". Incluso es posible hacerlo (cambiando la configuración), encontré que no es tan estable y de alguna manera engorroso.

Se me ocurrió una solución simple: un "botón indicador", que desactiva la clasificación y activa el movimiento ... ¡y funciona como un amuleto! Todo lo que tiene que hacer es realizar un seguimiento de la id del padre "li" antes y después de moverlo.

Mis 5 centavos.

+0

Ejemplo/fuente de la funcionalidad a la que se refiere? – Eric

Cuestiones relacionadas