Está usted en Indice > Construcción > Lenguajes > JavaScript > Lecciones y Paso a Paso > Reordenar lista mediante mootools con Javascript
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Reordenar lista mediante mootools con Javascript (2)

Habrá tres operaciones distintas: crear efecto drag, añadir evento drop a las categorías y añadir evento drop a las subcategorías. Digo crear efecto drag porque realmente lo que se hace es que cuando se ejecuta el evento mousedown , se crea una copia del elemento, y es este el que se mueve por la pantalla, guardando una referencia al elemento original. Hay distinción entre el evento drop de las categorías y las subcategorías porque si se trata de una categoría se añade sin más, y si es una subcategoría se añade en la categoría. A parte, si se intenta mover una categoría que contiene subcategorías, solo se añadirán las subcategorías, no la categoría.

  1. // Drag & Drop de listado
  2. function _lista() { 
  3.   if ($('lista_categorias')) { 
  4. // Drag de cada categoria/subcategoria
  5. // Para cada elemento li añado el evento mousedown, para que cuando se ejecute se cree una copia de ese elemento, se le de estilo semi transparente y se permita hacer drag
  6. $$('#lista_categorias li').each(function(elemento){ 
  7.   elemento.addEvent('mousedown', function(e) { 
  8. e = new Event(e).stop(); 
  9. window.item = elemento; 
  10. window.categoria_clone = this.clone() 
  11. .setStyles(this.getCoordinates()) 
  12. .setStyles({'opacity': 0.7, 'position': 'absolute'}) 
  13. .addEvent('drop', function() {console.log('DROP')}) 
  14. .addEvent('emptydrop', function() { 
  15. this.remove(); 
  16. }).inject(document.body); 
  17. categoria_clone.makeDraggable({ 
  18.    droppables: $$('#lista_categorias li') 
  19. }).start(e); 
  20.   }); 
  21. }); 
  22. // Drop en las categorias
  23. // Para cada categoria, le añadimos el evento drop, que permite recibir elementos "drag". Si el elemento que se recibe tiene subcategorias, entonces se cogen estas y se añaden al elemento ul que contiene, si no lo contiene, lo creamos. Si no contiene subcategorías, se añade sin más.
  24. $$('#lista_categorias li.categoria').each(function(drop){ 
  25.   drop.addEvents({ 
  26.   'drop': function() { 
  27.   window.categoria_clone.remove(); 
  28.   var ul = window.item.getElement('ul'); 
  29.   if (!drop.getElement('ul')) { 
  30. (new Element('ul')).inject(drop); 
  31.   } 
  32.   dropul = drop.getElement('ul');  
  33.   if (ul) { 
  34. ul.getElements('li').each(function(li) { 
  35.   li.inject(dropul);  
  36. }); 
  37. ul.remove(); 
  38.   } else { 
  39. window.item.inject(dropul); 
  40.   } 
  41.  drop.setStyle('background', '#FFFFFF'); 
  42. //dropFx.start('7389AE').chain(dropFx.start.pass('ffffff', dropFx));
  43.   }, 
  44.   'over': function() { 
  45.  drop.setStyle('background', '#DDDDFF'); 
  46. //dropFx.start('98B5C1');
  47.   }, 
  48.   'leave': function() { 
  49.  drop.setStyle('background', '#FFFFFF'); 
  50. // window.categoria_clone.remove();
  51. //dropFx.start('ffffff');
  52.   }) 
  53. }); 
  54. // Si cae el drop en una subcategoria lo inserto en el padre
  55. $$('#lista_categorias li.subcategoria').each(function(drop){ 
  56.   drop.addEvents({ 
  57.   'drop': function() { 
  58.   window.categoria_clone.remove(); 
  59.   var ul = window.item.getElement('ul'); 
  60.   dropul = drop.parentNode;  
  61.   if (ul) { 
  62. ul.getElements('li').each(function(li) { 
  63.   li.inject(dropul);  
  64. }); 
  65. ul.remove(); 
  66.   } else { 
  67. window.item.inject(dropul); 
  68.   } 
  69.   } 
  70.   }) 
  71.   }); 
  72.   } 



Autor: sentidoweb.com
http://sentidoweb.com/2007/09/18/laboratorio-reordenar-lista-mediante-mootools.php

Usuarios que han visto este tema también han visto...

- Función removeChild en Javascript
- Etiqueta desplazándose por el explorador en JavaScript
- El for en JavaScript
- Reloj Sigue al cursor en Javascript
- Las funciones trigonométricas en Javascript


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad






Cursos de Community Manager

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 25-05-2012 a las 19:08:25