2013-08-15 4 views
5

Ich habe einen sortierbar wie folgt aufgebaut:Sortable - Ausgeschlossene Objekte beeinflussen noch Index

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

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

Ich möchte Elemente mit der nosort Klasse von der sortierbar ignorieren.

Das funktioniert gut; Der Index, den ich bekomme, scheint jedoch alle Elemente im sortierbaren zu enthalten, nicht nur diejenigen, die sortiert werden können, so dass es nicht wirklich für das verwendet werden kann, was ich brauche.

Gibt es einen einfachen Weg, dies zu vermeiden?


Hier ist ein jsFiddle ein Beispiel sortierbar.

(Anmerkung: 1 aus dem Index Subtraktion ist keine Option, da die Anzahl und Position der ausgeschlossenen Elemente variieren kann)

+0

Bitte geben Sie [Jsfiddle Beispiel] (http://jsfiddle.net) – Dom

Antwort

2

Hier finden Sie eine Sammlung von .sortable Kinder und dann den Index finden, mit .index(), basierend auf dass ...

können Sie tun, indem Sie die folgenden Änderungen vornehmen:

$(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

Awesome, danke! Du hast mir viel Zeit gespart. – MightyPork

+0

Natürlich! Lass es mich wissen, wenn du etwas anderes brauchst! – Dom

+0

@MightyPork hat Änderungen vorgenommen – Dom

Verwandte Themen