2012-06-03 12 views
10

En el evento "hacer clic", me gustaría obtener el índice de un elemento que puede estar en contenedores múltiples. La posición del índice devuelta debe calcularse con relación a su contenedor y no a la etiqueta corporal.Obtenga el índice jquery de la misma clase de elemento en diferentes contenedores

me escribió un ejemplo aquí: http://jsfiddle.net/zUGcK/

Mi problema es que cuando hago clic en las líneas de la segunda carpeta de bloques, el índice de línea devuelta son: 3, 4, 5, mientras que me gustaría 0, 1, 2 para ser devuelto.

¿Qué debo cambiar en los argumentos de jquery index() para obtener 0, 1, 2 devueltos para cada línea en ambos contenedores?

Gracias

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> 

Respuesta

17

Usted puede usar esto para obtener el valor del índice para los elementos dentro de sus contenedores

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

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

Usted tiene que usar esta sintaxis de $.index

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

Working Fiddle

+0

¿Qué sucede si el bloque de línea también se encuentra dentro de un bloque de contenedor de línea? ¿Puedes echar un vistazo aquí: http://jsfiddle.net/zUGcK/32/ En este caso, el índice devuelto es siempre -1 (el índice del elemento no se encuentra pero no puedo ver lo que estoy haciendo mal) . Estoy tratando de obtener el índice para el contenedor del botón (la línea es el botón y el contenedor de línea es el contenedor del botón). Muchas gracias por su ayuda. – Vincent

+0

http://jsfiddle.net/zUGcK/22/, este es el mismo violín que en tu pregunta. ¿Has actualizado esto? –

+0

Luego use este http://jsfiddle.net/joycse06/zUGcK/35/ –

0

Índice actualizado con $ this.

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

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

No, '$ (this) .index()' mira a todos los hermanos, por lo que incluye 'div.header' y terminas con tu índice desactivado en uno. –

+0

Gracias @muistoabajo para corregir.He actualizado la respuesta. –

Cuestiones relacionadas