在下面的例子中如何使用jquery获取文档元素的索引?

时间:2011-08-11 16:35:06

标签: jquery

我想知道如何在内容itemEleven中获取span的索引,在下面的例子中使用jquery。假设我们无法按内容值获取元素:

    <div>  
        <span class="itemSubMenu">itemOne</span>  
        <span class="itemSubMenu">itemTwo</span>  
        <span class="itemSubMenu">itemThree</span>  
        <span class="itemSubMenu">itemFour</span>  
        <span class="itemSubMenu">itemFive</span>  
        <span class="itemSubMenu">itemSix</span>  
        <span class="itemSubMenu">itemSeven</span>  
    </div>  
    <div>  
        <span class="subMenuitemSubMenu">Something</span>  
        <span class="subMenuitemSubMenu">Something too</span>  
    </div>  
    <div>  
        <span class="itemSubMenu">itemEight</span>  
        <span class="itemSubMenu">itemNine</span>  
        <span class="itemSubMenu">itemTen</span>  
        <span class="itemSubMenu">itemEleven</span>  
        <span class="itemSubMenu">itemTwelve</span>  
        <span class="itemSubMenu">itemThirteen</span>  
        <span class="itemSubMenu">itemFourteen</span>  
        <span class="itemSubMenu">itemFifteen</span>  
    </div>  

当我尝试使用以下方法获取itemEight时。

 $(".itemSubmenu").click(function(){
     alert($(this).index());  
 });  

警告0,而不是9.假设它是从零开始的索引。

4 个答案:

答案 0 :(得分:3)

你试过吗

$(".itemSubMenu").index($(this));

点击事件内部?

这是一个小提琴:http://jsfiddle.net/3mDK5/

答案 1 :(得分:2)

索引始终基于其父级索引。

你需要这样做:

$(".itemSubMenu").click(function() {
    alert($(this).parent().parent().find('span').index(this));  
});

但实际上你需要一些基于以下内容的上下文选择器:

$(".itemSubMenu").click(function() {
    alert($('#foo').find('span').index(this));  
});

小提琴:http://jsfiddle.net/THyAB/

答案 2 :(得分:0)

您需要获取类itemSubMenu的跨度集合,然后从该集合中获取this的索引以获取正确的索引。

var selected = $(this);
var myIndex = $("itemSubMenu").index(selected);

答案 3 :(得分:0)

Demo

我喜欢这种方法。

$(".itemSubMenu").click(function(){
    var $this = this;
    var i;
    $(".itemSubMenu").each(function(idx,val){
       if(val === $this) console.log(i = idx);
    })
 });