Sto giocando con jQuery Sortable (http://johnny.github.io/jquery-sortable/) per visualizzare elenchi annidati, spostare elementi e quindi salvare i risultati finali. L'obiettivo finale è gestire una struttura/gerarchia del sito visualizzando categorie e pagine con trascinamento delle possibilità di rilascio da &.Rileva drop con jQuery ordinabile
Visualizzazione dell'elenco, trascinamento e rilascio di elementi e salvataggio dell'uscita funziona correttamente. Ora vorrei rilevare gli eventi di rilascio per indicare quali elementi sono stati spostati. Questo mi aiuterebbe ad evitare di aggiornare l'intera struttura del sito mentre solo alcuni elementi si sono spostati.
mia lista annidata si presenta così:
<ol id="structure" class="tree serialization">
<li class="placeholder-children ui-droppable">
LABEL
<ol>
<li class="placeholder-children ui-droppable">LABEL</li>
<li class="placeholder-children ui-droppable">LABEL
<ol>
<li class="placeholder-children ui-droppable">LABEL</li>
</ol>
</li>
</ol>
</li>
</ol>
LI sono tutti droppable e trascinabili
tutto viene inizializzato con:
<script>
$(function ()
{
$("ol.tree").sortable();
})
</script>
Ora viene la parte difficile, cerco di rilevare abbandonare gli eventi.
Di seguito uno non funziona affatto:
$(".placeholder-children").droppable({
drop: function(event, ui) {
alert('dropped');
}
});
});
questo funziona, ma si blocca la mia pagina:
<script>
$("ol.tree").sortable(
{
group: 'serialization',
onDrop: function (item, container, _super)
{
alert('dropped!');
}
});
</script>
Questo codice attiva l'avviso previsto, ma si blocca trascinando e posso' t modificare più nulla nella mia lista. È come se lo schermo intero fosse congelato perché non posso più muovermi o fare clic più nulla. Ho bisogno di ricaricare la pagina per uscirne.
Nota: senza l'avviso, si blocca anche.
Qualche idea?
UPDATE: Ho aggiunto un JSfiddle: http://jsfiddle.net/t9mp80yw/ ma non so come chiamare il file .js in modo che lo script può essere inizializzato. Ho provato ad aggiungere il file ospitato sul mio server ma sembra che jsfiddle non accetti file esterni.
UPDATE2 Ho provato lo script con Firefox e Internet Explorer, lo stesso problema.
Grazie mille
Laurent
PS: non è riportato, ma jQuery, jQuery UI, jQuery ordinabili siano caricati correttamente
in genere congela le tue pagine e richiede l'input dell'utente prima di progredire e quindi perderai la concentrazione di trascinamento. usa invece console.log per il debug, se lo desideri. Altrimenti il gestore di drop dovrebbe essere a posto. – cowboybebop
Ciao Cowboybebop, hai ragione ma in questo caso, anche senza l'avviso, il drag & drop si blocca. Se rimuovo il rilevamento dell'evento di rilascio, non c'è più il blocco. – Laurent
Puoi ricreare il problema con un jsFiddle? – j08691