2012-12-12 14 views
7

Sto usando JQuery Sortable. Mi piacerebbe sapere se è possibile, dopo un certo numero di ricorsi, ripristinare il controllo ordinabile allo stato originale, simile a un reset del modulo. L'opzione "annulla" sembra influenzare solo l'ultimo tentativo di ordinamento, non tutti.Come si esegue un reset su un JQuery Sortable

+0

forse memorizzare l'ordine predefinito in un attributo di dati? –

risposta

2

Memorizzare un riferimento all'ordine di elementi originale, quindi utilizzarlo per riordinarli.

Ora quando si desidera ripristinare l'ordinamento originale, è sufficiente aggiungere i div all'elemento #sortable.

$("#sortable").append(sortableElements); 
1

È possibile memorizzare una copia del documento genitore sul documento pronto e ripristinarlo al ripristino.

Per esempio, se <ul class="parent"> è il vostro elemento ordinabile:

var sortableCache; 
$(document).ready(function() { 
    ... 
    $('ul.parent').sortable({ ... }); 
    ... 
    sortableCache = $('ul.parent').clone(true); 
}); 

on reset, si può fare:

$('ul.parent').replaceWith(sortableCache); 
13

Personalmente, come farlo in questo modo:

$("#sortable").sortable({config...}); 
var cache = $("#sortable").html(); 

On Reset

$("#sortable").html(cache).sortable("refresh"); 

Ho provato a utilizzare .clone() e.children() e persino $ ("# ordinabile> *), ma trovare la cache dell'html() l'opzione migliore.

Nella mia situazione, ho due elenchi collegati. Uno contenente gli elementi correnti che l'utente può ordinare o rimuovere e un altro elenco di elementi disponibili che l'utente può prelevare per aggiungere all'elenco "elemento corrente". Avevo bisogno di un modo per ripristinare tutto allo stato originale. Quanto sopra funziona alla grande.

+0

Questa soluzione non funzionerà se si hanno più elenchi di classi come sorgenti. Sto usando 2 liste da inserire in una - dove il mio selettore è una classe. È un peccato che non ci sia un "reset" ufficiale che conosca la fonte di ogni articolo per tornare indietro. – Antony

0

questo è il modo semplice

$("#sortable").sortable("cancel"); 
+0

Questo annullerà solo l'ultima modifica ordinata. Se ordino multipli e poi li eseguo, non funzionerà per tutti loro –

Problemi correlati