2013-08-15 32 views
5

Tôi có một sắp xếp được thiết lập như thế này:Sortable - các mặt hàng chưa bao gồm vẫn ảnh hưởng đến chỉ số

$('.sortable').sortable({ 
    items: '> *:not(.nosort)', 
    axis: 'y', 

    stop: function (event, ui) { 
     var index = ui.item.index(); 
     // do something with the index 
    } 
}); 

Tôi muốn bỏ qua các yếu tố với lớp nosort từ sắp xếp.

Điều này hoạt động tốt; tuy nhiên, chỉ mục tôi nhận được dường như bao gồm tất cả các phần tử có thể sắp xếp, không chỉ các yếu tố có thể được sắp xếp, vì vậy nó không thể thực sự được sử dụng cho những gì tôi cần.

Có cách nào dễ dàng để tránh điều này không?


Dưới đây là jsFiddle của ví dụ có thể sắp xếp.

(lưu ý: trừ 1 từ chỉ số không phải là một lựa chọn, bởi vì số lượng và vị trí của các yếu tố loại trừ có thể thay đổi)

+0

Vui lòng cung cấp [ví dụ jsfiddle] (http://jsfiddle.net) – Dom

Trả lời

2

Nhận một bộ sưu tập các .sortable trẻ em và sau đó tìm các chỉ số, sử dụng .index(), dựa trên đó ...

Bạn có thể làm điều đó bằng cách làm cho những thay đổi sau:

$(document).ready(function() { 
    $('.sortable').sortable({ 
     items: '> *:not(.nosort)', 
     axis: 'y', 

     stop: function (event, ui) { 

      // obtain index of the moved item 
      var index = $(this).children(':not(.nosort)').index(ui.item); 

      $('#index').text(index); 

     } 
    }).disableSelection(); 
}); 

DEMO: http://jsfiddle.net/dirtyd77/Yy9hW/3/

+0

Tuyệt vời, cảm ơn! Bạn đã cứu tôi rất nhiều thời gian. – MightyPork

+0

Tất nhiên! Cho tôi biết nếu bạn cần thứ gì khác! – Dom

+0

@MightyPork đã thực hiện thay đổi – Dom

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