2012-06-03 4 views
10

Nell'evento "clic", vorrei ottenere l'indice di un elemento che può essere in più contenitori. La posizione dell'indice restituita deve essere calcolata relativamente al suo contenitore e non al tag del corpo.Ottieni l'indice jquery della stessa classe di elementi in contenitori diversi

ho scritto un esempio qui: http://jsfiddle.net/zUGcK/

mio problema è che quando clicco sulle linee nel secondo contenitore del blocco, l'indice di riga restituita sono: 3, 4, 5, mentre vorrei 0, 1, 2 da restituire.

Cosa devo modificare negli argomenti jquery index() per ottenere 0, 1, 2 restituiti per ogni riga in entrambi i contenitori?

Grazie

http://jsfiddle.net/zUGcK/

$('.line').click(function() 
{ 
    alert('index: '+$(this).index('.container .line')); 
}); 

<div class="container"> 
<div class="header">block #1</div> 
<div class="line">line #0</div> 
<div class="line">line #1</div> 
<div class="line">line #2</div> 
</div> 

<div class="container"> 
<div class="header">block #2</div> 
<div class="line">line #0 (index 3 returned instead of 0)</div> 
<div class="line">line #1 (index 4 returned instead of 1)</div> 
<div class="line">line #2 (index 5 returned instead of 2)</div> 
</div> 

risposta

17

È possibile utilizzare questo per ottenere il valore di indice per gli elementi all'interno del suo contenitore

$(function() 
{ 
    $('.line').click(function() 
    { 
     //alert('index: '+$(this).index('.container .line')); 

     alert($(this).closest('.container').find('.line').index(this)); 
    }); 
}); 

Devi usare questa sintassi di $.index

.index(element) 
element The DOM element or first element within the jQuery object to look for. 
​ 

Working Fiddle

+0

Cosa succede se il blocco di linea si trova anche all'interno di un blocco di riga-contenitore? Puoi dare un'occhiata qui: http://jsfiddle.net/zUGcK/32/ In questo caso, l'indice restituito è sempre -1 (l'indice dell'elemento non viene trovato ma non riesco a vedere cosa sto facendo male) . Sto cercando di ottenere l'indice per il contenitore dei pulsanti (la linea è il pulsante e il contenitore di linee è il contenitore del pulsante). Molte grazie per il vostro aiuto. – Vincent

+0

http://jsfiddle.net/zUGcK/22/, questo è lo stesso violino della domanda. hai aggiornato questo? –

+0

Quindi utilizzare questo http://jsfiddle.net/joycse06/zUGcK/35/ –

0

Indice aggiornato con $ this.

$('.line').click(function() 
{ 
    var $this=$(this); 
    var indx= $this.parent('.container').find('.line').index($this); 

    alert('index: '+indx); 
}); 
+1

No, '$ (this) .index()' guarda tutti i fratelli quindi include 'div.header' e finisci con il tuo indice di uno. –

+0

Grazie a @muistooshort per la correzione. Ho aggiornato la risposta. –

Problemi correlati