2012-06-03 89 views
10

在“click”事件上,我想获取可以在多个容器中的元素的索引。返回的索引位置应该相对于其容器而不是人体标签进行计算。获取不同容器中相同元素类的jQuery索引

我在这里写一个例子:http://jsfiddle.net/zUGcK/

我的问题是,当我在第二块容器点击线,返回的行索引是:3,4,5,而我想0,1 2被退回。

我应该在jquery index()参数中更改哪些值,以便在两个容器中为每行返回0,1,2?

感谢

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> 

回答

17

你必须使用的$.index

.index(element) 
element The DOM element or first element within the jQuery object to look for. 
​ 
这个语法,你可以用它来获取元素的索引值之内它的容器

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

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

Working Fiddle

+0

如果行块也位于行容器块内,该怎么办?你能看看这里:http://jsfiddle.net/zUGcK/32/在这种情况下,返回的索引始终是-1(元素索引没有找到,但我不明白我做错了什么) 。我试图获取按钮容器的索引(行是按钮,行容器是按钮的容器)。非常感谢您的帮助。 – Vincent

+0

http://jsfiddle.net/zUGcK/22/,这和你的问题一样。你有更新吗? –

+0

然后使用这个http://jsfiddle.net/joycse06/zUGcK/35/ –

0

用$ this更新了索引。

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

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

不,'$(this).index()'查看所有兄弟,因此它包含'div.header',并且最终以索引为1。 –

+0

谢谢@ muistooshort纠正。我已经更新了答案。 –

相关问题