2013-07-21 33 views
8

Tôi đang làm việc với jquery ui có thể sắp xếp. Tôi muốn lấy mảng sắp xếp để chuyển nó tới tệp xử lý khi sự kiện thả.Sự kiện thả xuống có thể sắp xếp Jquery ui

một điều buồn cười tôi tìm thấy .. http://jsfiddle.net/7Ny9h/

$(function() { 
    $("#sortable").sortable(); 
    $("#sortable").disableSelection(); 

    $("#sortable li").droppable({ 
     drop: function() { 
      var order = $("#sortable").sortable("serialize", {key:'order[]'}); 
      $("p").html(order); 
     } 
    }); 
}); 

Thấy mẫu, nếu tôi di chuyển BOX 2, các BOX 2 được gạt ra khỏi mảng.

Có lẽ tôi cần một loại sự kiện "dropend" vì có vẻ như sự kiện jquery ui drop không tính đến việc kéo và thả.

Trả lời

19

Tôi có thể giải quyết sự cố với sự kiện jQuery UI Sortable stop.

$(function() { 
    $("#sortable").sortable(); 
    $("#sortable").disableSelection(); 

    $("#sortable").sortable({ 
     stop: function() { 
      var order = $("#sortable").sortable("serialize", {key:'order[]'}); 
      $("p").html(order); 
     } 
    }); 
}); 
+0

không hoạt động này http://jsfiddle.net/Tncg8/ – Prozi

+0

@Prozi, đó là vì bạn đang làm sai. JSfiddle của bạn trong bình luận của bạn không thực sự thay đổi sự kiện "droppable" thành "sắp xếp". Đây là lý do tại sao nó đã thất bại về bạn, tôi đã cập nhật JSfiddle của bạn cho bạn ở đây: http://jsfiddle.net/a94fak79/ – hazrpg

+0

Xem câu trả lời của @ SoursopTree dưới đây cho một giải pháp rất đơn giản mà làm việc hoàn hảo cho tôi. –

19

Bạn cũng có thể sử dụng update để phát hiện.

$("#sortable").sortable({ 
     update: function() { 
      // do stuff 
     } 
    }); 
+1

Điều này rất có thể là tùy chọn tốt hơn (thay vì 'dừng') nếu bạn đang tìm cách thực hiện một loại thông báo "thành công" thay vì thông báo chung "về kết thúc di chuyển". – testing123

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