2012-12-06 16 views
6

Quindi quello che sto cercando è un modo per me di utilizzare sia ordinabile che trascinabile sullo stesso elemento. Diciamo che ho una lista di 5 elementi, questi sono tutti ordinabili. Quello che sto cercando di fare è quando un elemento è caduto ontop di un altro, si aggiungerà a quell'elemento e andare fuori dalla lista, ad esempio:jQuery elenco ordinabile e trascinabile

<ul> 
    <li>List Item</li> 
    <li>List Item</li> 
    <li>List Item</li> 
    <li>List Item</li> 
    <li>List Item</li> 
</ul> 

Element è stato fatto cadere

<ul> 
    <li>List Item</li> 
    <li>List Item</li> 
    <li>List Item</li> 
    <li>List Item 
     <ul> 
       <li>List Item Dropped</li> 
     </ul> 
    </li> 

</ul> 

Se hai un indizio, una risposta o una linea guida su come farlo sarebbe molto apprezzata!

+0

Dai un'occhiata a questo link [JQFAQ.com] (http://jqfaq.com/how-to-use-jquery-sortable-and-droppable-in-same-list/). Ciò fornirà una buona risposta alla tua domanda e ci sono anche altre domande frequenti. – karthik

+0

@squirreldev: Ho provato le risposte proposte e il suggerimento dal commento ma non sembrano funzionare completamente (sia l'ordinamento che l'eliminazione). Hai trovato una soluzione? – Giorgio

risposta

0

HTML:

<ul id="theUL"> 
    <li class="item">List Item</li> 
    <li class="item">List Item</li> 
    <li class="item">List Item</li> 
    <li class="item">List Item</li> 
    <li class="item">List Item</li> 
</ul> 

Ecco il codice ordinabile per la UL. È necessario configurare l'evento di modifica. L'evento change si verifica quando si verifica un evento sort, altrimenti, si verifica l'evento drop.

$("#theUL").sortable({ 
    revert: true, 
    items: "li", 
    change: function(event, ui) {ui.helper.addClass("change");}, 
    beforeStop: function(event, ui) {ui.helper.removeClass("change");} 
}); 

Nel codice droppable, controllare se si verifica il cambiamento, se non, allora vuol dire cadere.

$(".item").droppable({ 
    accept: function(el) { 
     return el.hasClass('item'); 
    }, 
    drop: function (event, ui) { 
     item=ui.draggable; 
     if(!item.hasClass('change')){ 
      //dropped! 
     } 
    } 

});

Problemi correlati