2012-06-03 4 views
10

"클릭"이벤트에서 여러 컨테이너에있을 수있는 요소의 인덱스를 얻고 싶습니다. 반환 된 인덱스 위치는 body 태그가 아닌 해당 컨테이너에 상대적으로 계산되어야합니다. , 3, 4, 5, 내가 0, 1을하려는 반면 : http://jsfiddle.net/zUGcK/다른 컨테이너 내에서 동일한 요소 클래스의 jquery 인덱스를 가져옵니다.

내 문제는 내가 두 번째 블록 컨테이너 선을 클릭하면, 반환 라인 인덱스가 있다는 것입니다 :

은 여기 예를 썼다 2가 반환됩니다.

두 컨테이너의 각 줄마다 0, 1, 2를 얻기 위해 jquery index() 인수를 변경해야하는 이유는 무엇입니까?

감사

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로 업데이트되었습니다.

+1

아니요,'$ (this) .index()'는 모든 형제를보고 'div.header'를 포함하므로 인덱스가 하나 떨어져 나옵니다. –

+0

고맙습니다. @muistooshort for correct.I 답변을 업데이트했습니다. –

관련 문제