2011-12-14 19 views
8

Ho due elenchi di elementi e ho abilitato l'interfaccia utente jQuery ordinabile su entrambi. Ho usato l'opzione connectWith per permettermi di trascinare tra i due elenchi.jQuery UI ordinabile: Scorri tutta la pagina e il contenitore

Un elenco contiene molti elementi, quindi ho aggiunto overflow-y: scroll ad esso, ma quando provo a prendere un elemento da quell'elenco e lo trascino all'altro, scorre solo l'elenco, non l'intera pagina.

Ho creato una demo jsFiddle (http://jsfiddle.net/MCcuc/). Scorri verso il basso e prova a spostare Item Q (trascinalo dalla barra grigia sulla parte superiore della scatola) dalla lista rossa nella lista verde. Vedrai scorrere la lista rossa, ma la pagina no. Come posso scorrere l'intera pagina e la lista?

Sto solo consentendo sortable senza molte opzioni:

$('.sort').sortable({ 
    connectWith: '.sort', 
    handle: '.handle' 
}); 
+1

Penso che questo abbia qualcosa a che fare con il secondo elenco che è scorrevole. Si noti che se si avvia e si trascina fuori dal primo elenco nella seconda lista, scorre la pagina come si desidera. –

risposta

12

Questo è in effetti un conflitto con troppopieno scorrevole. L'elemento helagg trascinabile è vincolato al suo genitore in quel caso, probabilmente perché il tentativo di "uscire" dal genitore ha come risultato solo l'allargamento della sua regione di scorrimento.

Una soluzione è passare una funzione helper che clona l'elemento trascinato e lo ripara sotto il corpo della pagina. In questo modo, l'elemento di supporto trascinabile sarà al di fuori del suo genitore originale fin dall'inizio, e quindi farà scorrere l'intera pagina:

$(".sort").sortable({ 
    connectWith: ".sort", 
    handle: ".handle", 
    helper: function(event, element) { 
     return element.clone().appendTo("body"); 
    } 
}); 

troverete un violino aggiornato dimostrando questo here.

+0

Fantastico, sembra funzionare. Ho trovato un bug strano però. Se si tenta di trascinare fino alla fine della lista verde, salta di nuovo nella lista rossa. Se lo lasci da qualche altra parte, funziona. –

+1

Infatti. Apparentemente i due sibili competono per essere il bersaglio di lancio, e la distanza dall'assistente sembra il determinatore. –

Problemi correlati