Voy a realizar un ejemplo sencillo, aunque bastante impresionante por usar eventos drag & drop, para demostrar la potencia del bicho a l@s no iniciad@s.
Ingredientes:
- Dos listas
- Items en cada lista
- Un botón para mostrar los datos de cada lista
- JQuery
Objetivo: Arrastrar items de una lista a otra y mostrar la información que existe en cada una al pulsar un botón.
Primero creo un html sencillo con 2 listas:
14 |
<ul class="lista" id="listaOrigen"> |
15 |
<li class="item">item 1li> |
16 |
<li class="item">item 2li> |
17 |
<li class="item">item 3li> |
20 |
<ul class="lista" id="listaDestino"> |
Añado al head las referencias a los ficheros de JQuery. En este caso me hace falta el ui.core.js el ui.draggable.js y el ui.droppable.js además del mínimo para que funcione JQuery.
*Nota: En el ejemplo uso rutas absolutas, en un entorno de producción sería conveniente descargar los ficheros y usar rutas relativas.
El siguiente paso sería hacer cada uno de los elementos cuyo class sea “item” arrastrables. Para ello añado el siguiente javascript también en la cabecera. La propiedad helper a clone indica que sea un clon del objeto a arrastrar el que se arrastre y que el original se mantenga en su sitio hasta soltarlo sobre su objetivo.
2 |
$(document).ready(function(){ |
3 |
$(".item").draggable({helper: 'clone'}); |
$(document).ready(function() indica que se lance el script al cargar el documento (similar al onload).
Una vez hecho esto ya se pueden arrastrar los items. Ahora tengo que definir los destinos (droppables) que en este caso serán las dos listas dado que su atributo class es lista.
La propiedad accept indica el tipo de objeto que acepta sea arrastrado sobre el. La propiedad drop define una función que se ejecutará al soltar un objeto draggable del tipo definido en el accept. Esta función añade al objeto droppable “$(this).append($(ui.draggable))” el objeto arrastrado sobre el.
1 |
$(".lista").droppable({ |