2010-03-14 27 views
12

tôi có một danh sách sắp xếp được như thế này: http://jqueryui.com/demos/sortableLấy vị trí của nguyên tố này trong một danh sách khi nó kéo/thả (ui.sortable)

Có thể để có được sự khởi đầu và kết thúc vị trí của nguyên tố trong danh sách, khi nó đã được di chuyển? Tôi đang nói về số vị trí của họ, trong danh sách.

Ví dụ: nếu tôi di chuyển phần tử 2 đến vị trí 5 trong danh sách, tôi muốn chỉ định hai số đó cho biến.

Tôi mới sử dụng jQuery - mọi trợ giúp sẽ được đánh giá cao.

+2

Đây là một ví dụ tuyệt vời của thiết kế API khủng khiếp của jQuery UI –

Trả lời

32

SOLUTION:

$(function() { 
    $('ul#sortable').sortable({ 
     start: function(event, ui) { 
      var start_pos = ui.item.index(); 
      ui.item.data('start_pos', start_pos); 
     }, 
     update: function(event, ui) { 
      var start_pos = ui.item.data('start_pos'); 
      var end_pos = ui.item.index(); 
      alert(start_pos + ' - ' + end_pos); 
     } 
    }); 
}); 
  • LƯU Ý: cập nhật để làm cho chúng ta e jQuery data() phương pháp dưới lời khuyên của Alconja
+1

1 câu trả lời ngắn gọn đẹp như vậy, nhưng bạn không cần phải quấn 'ui.item', đó là đã là một đối tượng jQuery. Vì vậy, thay vì '$ (ui.item)', hãy sử dụng 'ui.item' – Mottie

+0

âm thanh tốt! ;-) –

+0

Câu trả lời thanh lịch! Cảm ơn bạn rất nhiều. Tôi đoán đối tượng ui.item là thứ tôi đang tìm kiếm ở đây. – Wurlitzer

1

Tôi tin rằng những gì bạn đang tìm kiếm để làm được thực hiện với serialize method. Sắp xếp theo thứ tự là nhận được thứ tự mới của danh sách.

1

Đối với một số lý do ui.item.index() không làm việc cho tôi.

này đã làm:

update: function (event, ui) 
{ 
    var index = $('li', $(ui.item).parent()).index(ui.item); 
    alert(index); 
} 
Các vấn đề liên quan