2011-02-03 12 views
8

Fondamentalmente utilizzando una struttura di elenchi, sto cercando di rendere ogni ordinabile all'interno del proprio livello, ma non all'interno di altri livelli. Quindi, se sto trascinando verso il basso Number 1, non si confonderà con nessuno dei sottolli o dei li, ma andrà solo sotto Number 2. Questo è quello che ho fino ad ora, e mentre impedisce a li di andare al di sopra del livello, non impedisce a li's di mescolare SOTTO il suo livello. Per esempio in questo momento posso muovermi Number 1 tra Number 2.1 e Number 2.2Interfaccia utente jQuery: consente solo ordinabile all'interno del proprio livello padre e non sopra o sotto

$(".sortable2, .sortable2 ul").sortable({ 
    opacity: 0.5, 
     stop:function(i){ 
      $.ajax({ 
       type: "GET", 
       url: "?", 
       data: $(this).sortable("serialize") 
      }); 
     } 
}); 



$(".sortable2").selectable(); 
$(".sortable2").disableSelection(); 


$('.sortable2').bind('mousedown', function(e) { 
    e.stopPropagation(); 
}); 

Ecco la struttura ul li:

<ul class="sortable2"> 
    <li>Number 1 
     <ul class="sortable2"> 
      <li>Number 1.1</li> 
      <li>Number 1.2</li> 
     </ul> 
    <li> 
    <li>Number 2 
     <ul class="sortable2"> 
      <li>Number 2.1</li> 
      <li>Number 2.2 
       <ul class="sortable2"> 
        <li>Number 2.2.1</li> 
        <li>Number 2.2.2</li> 
       </ul> 
      </li> 
     </ul> 
    <li> 
</ul> 

risposta

18

tuo HTML e selettori sono entrambi molto incasinato. L'ho ripulito per te qui. Si noti che è necessario definire nomi di classi diversi per i diversi livelli di caratteribles, o almeno assicurarsi che non vengano restituiti dallo stesso selettore. Dai un'occhiata a questo link per un'implementazione fisso: http://jsfiddle.net/GMUbj/

Si potrebbe anche mettere a punto i selettori in modo da non doveva continuare a definire i nomi delle classi e di evitare tutto questo casino del tutto, come in: http://jsfiddle.net/HWmz3/

Come osservato in un'altra risposta è possibile attivare o disattivare questo per singoli sottolisti utilizzando l'opzione elementi se si desidera infastidire l'applicazione di una classe css a tutti gli elenchi che si desidera ordinare (si noti che ho lasciato la classe disattivata sulla maggior parte degli elementi così puoi vedere come funziona): http://jsfiddle.net/DnaBs/

+0

Grande !!! Ben spiegato – shadow0359

Problemi correlati