2013-04-22 2 views
1

문서의 모든 항목을 인덱싱 한 다음 인덱스로 호출하고 싶습니다. html로 :자식 노드에 대한 Jquery 인덱스가 작동하지 않습니다.

alert('Index: ' + $('#foo').index()); 

문제는이 ul#foo 모두 수 0 경고이다 :

<ul> 
    <li id="foo">foo</li> 
    <li id="bar">bar</li> 
</ul> 

경고는 인덱스를 얻을 수 있습니다. 이 논리를 이해하지만 순서대로 사용해야하므로 0#foo1이어야합니다.

이러한 유형의 색인 생성을 시도하려면 어떻게해야합니까? 나는 prevAll()을 시도했지만 그 결과는 똑같습니다.

추신 : 실제 코드는 큰 문서에서 작동해야합니다.

Example code

+0

당신은 부모로부터 아이 홀드 인덱스 + 1이 필요하다는 것을 의미합니까? – egig

+0

@Charlie 잘 모르겠습니다. 코드가 어떻게 보이고 큰 문서에서 어떻게 작동하는지 모르겠습니다. 나는 문서의 모든 항목이 무언가의 자식이라고 상상할 수 있습니다. – Youss

답변

1

index()없이. 그러나 그것을 능가하는 인수로 호출 할 수 있습니다.

우리가 당신의 예를

<ul> 
    <li id="foo">foo</li> 
    <li id="bar">bar</li> 
</ul> 

을 위해 최선을 다하고한다고 가정 해결책은 다음과 같을 수 있습니다 :

$('ul, li').index($('ul')) // => 0 
$('ul, li').index($('#foo')) // => 1 
$('ul, li').index($('#bar')) // => 2 

심지어 프로그래밍 방식으로이 작업을 수행 할 수 있습니다

$('ul, li').each(function(i) { 
    console.log(this.tagName + (!!this.id ? " #" + this.id : "") + " = " + i) 
}) 

// UL  => 0 
// LI#foo => 1 
// LI#bar => 2 

것은 그냥 알고 , $(selector).index(element)element의 색인을 반환합니다. 노드는 selector과 일치합니다.

희망이 있습니다.

+0

고마워, 정확히 내가 무엇을 찾고 있었는지 :) 내가 모든 선택자'*'를 넣으면 그것은 또한 나에게 메타 헤드 제목 등을 준다. 멋진 – Youss

+0

나는 역 구문 '$ (selector1) .index (selector2)','selector1'는'selector2'에서 검색됩니다. – Blender

1

은 당신이 뭔가를 할 수 있습니다 : 인수가 부모의 내 요소의 인덱스를 찾습니다

$.fn.tree_index = function() { 
    var index = -1; 

    $(this).parents().each(function() { 
     index += $(this).index() + 1; 
    }); 

    return index; 
} 

alert('Index: ' + $('#foo').tree_index()); 
+0

고마워요. :) 그 트릭을하는 것 같습니다. 나는 이것을 코드에서 본다. (! $ this.is ('body, html'))'정말 필요한가? – Youss

+1

@Youss : 아니, 방금 내 대답을 업데이트했습니다. – Blender

+0

다시 한번 고마워요 .--) 내 스스로 할 수 없었어요 – Youss

관련 문제