2012-12-12 42 views
7

Tôi đang sử dụng JQuery Sortable. Tôi muốn biết nếu nó có thể, sau khi một số khu nghỉ mát, khôi phục lại sự kiểm soát sắp xếp trở lại trạng thái ban đầu của nó tương tự như một thiết lập lại hình thức. Tùy chọn 'hủy' chỉ dường như ảnh hưởng đến nỗ lực sắp xếp cuối cùng không phải tất cả chúng.Làm thế nào để bạn thực hiện đặt lại trên một JQuery có thể sắp xếp

+0

có thể lưu trữ các thứ tự mặc định trong một thuộc tính dữ liệu? –

Trả lời

2

Lưu trữ tham chiếu đến thứ tự phần tử gốc sau đó sử dụng thứ tự đó để sắp xếp lại chúng.

var sortableElements = $("#sortable div"); 
$("#sortable").sortable(); 

Bây giờ khi bạn muốn khôi phục thứ tự sắp xếp ban đầu, chỉ cần nối các div vào phần tử #sortable.

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

Bạn có thể lưu một bản sao của phụ huynh trên tài liệu sẵn sàng và khôi phục khi đặt lại.

Ví dụ, nếu <ul class="parent"> là yếu tố có thể phân loại của bạn:

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

On đặt lại, bạn có thể làm:

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

Cá nhân tôi thích làm theo cách này:

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

Khi đặt lại

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

Tôi đã thử sử dụng .clone() và.children() và thậm chí là $ ("# sortable> *), nhưng tìm bộ nhớ đệm tùy chọn tốt nhất .html().

Trong trường hợp của tôi, tôi có hai danh sách được kết nối. Một chứa các mục hiện tại mà người dùng có thể sắp xếp hoặc xóa và một danh sách các mục có sẵn khác mà người dùng có thể lấy từ để thêm vào danh sách "mục hiện tại". Tôi cần một cách để thiết lập lại mọi thứ về trạng thái ban đầu. Các công trình trên tuyệt vời.

+0

Giải pháp này sẽ không hoạt động nếu bạn có nhiều danh sách dựa trên lớp làm nguồn của bạn. Tôi đang sử dụng 2 danh sách để đưa vào một danh sách - nơi bộ chọn của tôi là một lớp. Đó là một sự xấu hổ không có một "thiết lập lại" chính thức mà biết nguồn gốc của mỗi mục để quay trở lại. – Antony

0

đây là cách đơn giản

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

Thao tác này sẽ chỉ hoàn tác thay đổi được sắp xếp cuối cùng. Nếu tôi sắp xếp nhiều và sau đó thực hiện điều này, nó sẽ không hoạt động cho tất cả chúng –

Các vấn đề liên quan