2012-02-22 18 views
13

ecco una semplice domanda. Ho un 'ul' che ho reso ordinabile tramite la funzione sortable() di jquery-ui. Voglio rimuovere elementi quando vengono trascinati fuori dalla lista. Il modo in cui l'ho implementato funziona nel senso che quando trascino un elemento dall'elenco viene rimosso, ma viene rimosso anche quando riorganizzo l'elenco. Come ottengo il comportamento che sto cercando senza questo comportamento non intenzionale. Segue tutto il codice:Come rimuovere un elemento che viene estratto dalla sua lista?

<html> 
<head> 
    <link type="text/css" href="jquery-ui/css/ui-lightness/jquery-ui-1.8.17.custom.css" rel="Stylesheet" /> 
    <script type="text/javascript" src="jquery-ui/js/jquery-1.7.1.min.js"></script> 
    <script type="text/javascript" src="jquery-ui/js/jquery-ui-1.8.17.custom.min.js"></script> 

    <script type="text/javascript"> 
    $(function(){ 
     $('#sortme').sortable({ 
      out: function(event, ui){ 
       ui.item.remove(); 
      } 
     }); 
     $('#sortme').disableSelection(); 
    }); 
    </script> 

    <style> 
    li{ 
     list-style-type: none; 
     width: 200px; 
     height: 50px; 
     border: 1px solid #000; 
     text-align: center; 
     box-sizing: border-box; 
     padding-top: 15px; 
    } 
    </style> 
    <title> jqui sort test </title> 

</head> 
<body> 
    <ul id='sortme'> 
     <li>0</li> 
     <li>1</li> 
     <li>2</li> 
     <li>3</li> 
     <li>4</li> 
     <li>5</li> 
     <li>6</li> 
     <li>7</li> 
     <li>8</li> 
     <li>9</li> 
    </ul> 
</body> 
</html> 

Grazie per il vostro aiuto!

risposta

25

Si potrebbe provare a utilizzare una variabile per verificare se gli elementi che si stanno trascinando vengono trascinati fuori dal contenitore principale.

È possibile utilizzare il sopra e fuori eventi del jQuery UI ordinabili per assegnare il valore di questa variabile e quindi eseguire la rimozione dell'elemento trascinato sul beforeStop evento.

ecco un demo di quello che ho messo a punto: http://jsfiddle.net/drewP/m7VJq/1/

fatemi sapere se funziona per voi.

+0

Ho dimenticato troppo. Grazie Drew! :-D – Fallenreaper

+0

Questo era dannatamente brillante! Salvato il giorno Drew! :) – cbloss793

0

Sono sicuro che ci sono più di un modo corretto per farlo ma se dovessi farlo probabilmente userei un elemento wrapper come droppabile. Perché non il contenitore del sito principale, l'onnipotente # wrapper! Vincola all'evento drop del droppable e rimuovi completamente l'oggetto. Neanche questo andrà bene.

Problemi correlati