2013-08-15 13 views
5

Ho un ordinabile impostato in questo modo:Sortable - elementi esclusi influenzare ancora indice

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

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

voglio ignorare gli elementi con la classe nosort dal ordinabile.

Questo funziona bene; tuttavia, l'indice che ottengo sembra includere tutti gli elementi nella variabile ordinabile, non solo quelli che possono essere ordinati, quindi non può essere realmente utilizzato per ciò di cui ho bisogno.

C'è un modo semplice per evitare questo?


Ecco un jsFiddle di un esempio ordinabile.

(nota: sottraendo 1 dall'indice non è un'opzione, perché il numero e la posizione degli elementi esclusi possono variare)

+0

Si prega di fornire [esempio jsfiddle] (http://jsfiddle.net) – Dom

risposta

2

Ottenere una raccolta di .sortable figli e poi trovare l'indice, utilizzando .index(), basato su quel ...

potete farlo effettuando le seguenti modifiche:

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

Impressionante, grazie! Mi hai salvato un sacco di tempo. – MightyPork

+0

Ovviamente! Fammi sapere se hai bisogno di qualcos'altro! – Dom

+0

@MightyPork ha apportato modifiche – Dom

Problemi correlati