Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/07/2011, 07:01
Dany_s
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: jQuery evitar duplicados en el drag y drop

¿algo así?
La lista #dos acepta solo li de #uno
en el drop creo un li y agrego un atributo data-index que tiene el valor de la posición de los li de #uno asi puedo comprobar antes de crearlo si ya existe, es lo que se me ocurrió.

Código HTML:
Ver original
  1.     <head>
  2.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  3.         <title>JSP Page</title>
  4.         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
  5.         <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"></script>
  6.     </head>
  7.     <script>
  8.     $( function(){
  9.         $( "#uno li" ).draggable({helper:"clone"});
  10.  
  11.         $( "#dos" ).droppable({
  12.             accept: "#uno li",
  13.             drop: function( event, ui ){
  14.                 dataIndex = ui.draggable.index();
  15.                 if ( !$(this).find("li[data-index="+dataIndex+"]").length ){
  16.                     $( this ).find( ".placeholder" ).remove();
  17.                     $( "<li data-index='"+ dataIndex +"'></li>" ).html( ui.draggable.text() + " - <a href='#'>x</a>" ).appendTo( this );
  18.                 }
  19.             }
  20.         });
  21.  
  22.         $('a', '#dos').live('click', function(){
  23.             $(this).parent().remove();
  24.         });
  25.  
  26.     });
  27.     </script>
  28.     <style>
  29.         ul{min-height:50px; width:50px; background:#ccc}
  30.     </style>
  31.     <body>
  32.  
  33.     <ul id="uno">
  34.         <li>Uno</li>
  35.         <li>Dos</li>
  36.         <li>Tres</li>
  37.     </ul>
  38.  
  39.     <ul id="dos">
  40.  
  41.     </ul>
  42.  
  43.     </body>
  44. </html>

sino mejor pasar los li de una lista a la otra