JQuery .index()不返回元素的正确索引

时间:2013-10-30 10:19:01

标签: javascript jquery html indexing

首先是我的HTML:

<h2>
  <a href=[...]>
    <expander>
      SomeText
</expander>
  </a>
</h2>

<h2>
  <a href=[...]>
    <expander>
      SomeText
</expander>
  </a>
</h2>

现在是Javascript / JQuery:

$("expander").on("click", function(){
    var blubb = $(this).index();
            alert(blubb)
});

我的问题是“警报”(实际上“blubb”var)一直抛出零。如果我点击第二个扩展器,它不应该给“1”吗?

谢谢!

此致

3 个答案:

答案 0 :(得分:2)

由于expander是其父索引的第一个且唯一的子节点将始终返回0

试试这个:

var blubb = $(this).closest('h2').index();

<强>演示

Try before buy

答案 1 :(得分:1)

您需要执行此操作才能获得expander点击的正确索引:

$("expander").on("click", function (e) {
    e.preventDefault();
    var blubb = $("expander").index(this);
    alert(blubb)
});

Fiddle Demo

答案 2 :(得分:0)

没有任何参数的

.index()将给出元素的索引与其兄弟的关系

在您的情况下,您需要找到相对于页面中的扩展器元素的单击扩展器的索引,因此请尝试

var $expanders = $("expander").on("click", function(){
    var blubb = $expanders.index(this);
    alert(blubb)
});

演示:Fiddle