2012-09-21 2 views
2

여기에 아주 간단한 바이올린이 있습니다.jquery 콜렉션을 기준으로 클릭 한 요소의 인덱스를 가져옵니다.

http://jsfiddle.net/tnQne/

내가 가진 JS 여기에 단지 1 앵커 태그가 섹션 내 이후로는 항상 0 반환

$('section a').on('click', function() { 
    alert($(this).index()); 
}); 

입니다. 내가 원했던 것은 jquery 컬렉션에서 클릭 된 요소의 위치를 ​​반환한다는 것입니다. 따라서 마지막 섹션 앵커를 클릭하면 2 (0 기반)가 반환됩니다.

답변

8

원래 컬렉션을 저장하고 해당 컬렉션에 index을 호출해야합니다.

var links = $('section a').on('click', function() { 
    alert(links.index(this)); 
}); 

jsFiddle


코드의 문제

$(this).index()가 형제를 기준으로 요소의 인덱스를 얻을 것입니다. a 요소에는 형제가 없으므로 인덱스는 항상 0입니다. 내가 링크 한 API 페이지는 DOM 요소가 인수 인 경우 index 함수가 어떻게 작동하는지 설명합니다.

+0

흥미이 잘 작동합니다. 나는 그것을 저장하는 것이 차이를 만들었다 고 생각하지 않았다, 명백하게 그것이한다! 감사합니다 – Huangism

+0

@Huangism 설명을 보려면 편집을 참조하십시오. – lonesomeday

+0

물론 $ (this)에 대해 index()를 호출하는 것은 어리석은 일입니다. 이제는 그것을 보았습니다. 하하. – Huangism

2

lonesomeday 그것을 할 수있는 좋은 방법이 있지만, 또 다른 방법은 다음과 같습니다

$('section a').on('click', function(e) { 
    alert($.inArray(e.target, $('section a'))); 
});​ 

jsFiddle example

관련 문제