1

는 내가 jQuery를 사용하고 단순히 내가 관련하여 현재 인덱스를 얻는 방법jQuery를 사용하여 부모 요소를 기준으로 현재 항목의 인덱스를 얻으려면 어떻게해야합니까?

$('ul#navbar').children().length; 

를 사용하여 총을 가지고

<ul id="navbar"> 
    <li><a href="#a">Link</a></li> 
    <li><a href="#b">Link</a></li> 
    <li><a href="#c">Link</a></li> 
    <li><a href="#d">Link</a></li> 
    <li><a href="#e">Link</a></li> 
</ul> 

내에서 현재 항목의 인덱스를 얻기 위해 노력하고 있어요 부모 요소?

예 : 세 번째 링크를 클릭하면 3이 반환되고 배열의 경우 2가 반환됩니다. # 네비게이션 바에을 상향하는 자바 스크립트의 ul.navbar을 변경에 index() 방법을 사용하여

답변

3

사과 :

나는 다음하지만

$('ul#navbar a').click(function(){ 
    var curPos = $(this).parent().parent().index($(this).parent()); 
}); 

편집을 찾을 수 없습니다 -1을 반환 유지하려고했습니다 부모 li 요소

var curPos = $(this).parent().index(); 

http://api.jquery.com/index/

.index() 메소드에 인수가 전달되지 않으면 반환 값은 형제 요소를 기준으로 jQuery 객체 내의 첫 번째 요소 위치를 나타내는 정수입니다.

+0

항상 0이 반환됩니다. 'li' 노드를 색인하기 위해서는'.parent()'를 호출해야합니다. – jAndy

1
$(function() { 
    $('ul#navbar a').click(function(){ 
     var curPos = $(this).parent().index(); 
    }); 
}); 

트릭을 할해야합니다.

1

코드에서 ul.navbar에 액세스하려하지만 ul에는 navbar이라는 클래스가 없습니다. ID로 액세스하려면 ID 선택기를 사용하십시오. #

또한 형제와 관련하여 현재 요소의 색인을 가져 오는 index()을 사용해야합니다. .parent()을 사용하여 li을 얻은 다음 해당 색인에 액세스하십시오.

$('ul#navbar a').click(function(){ 
    var curPos = $(this).parent().index(); 
    console.log(curPos); 
}); 

예 : 네비게이션 바에 내부에 다른 앵커를,없는 경우 http://jsfiddle.net/jonathon/SyvZ5/

+0

사과는 오타 였지만 실제로는 dheerosaur 멘션처럼 중첩 된 탐색이지만 그냥 잘라 버렸습니다. – benpalmer

1

navbars에서 공통적으로 사용하면, 앵커를 중첩 한 경우
$('#navbar a').click(function() { 
    var curpos = $('#navbar a').index(this); 
}); 

이 할 것 :

$('#navbar>li>a').click(function() { 
    var curpos = $('#navbar>li>a').index(this); 
}); 
관련 문제