jQuery索引方法不算数吧?

时间:2014-02-17 06:33:51

标签: jquery jquery-plugins

实施例

<ul>
  <li>0</li>
  <li>1</li>
  <li>2</li>
  <li>3</li>
</ul>
<ul>
  <li class="four">0</li>  # again 0
  <li>1</li>  # again 1
</ul>

$("li").click(function(){
  console.log($(this).index());
});

当我点击“四级”课时,如何获得“4”?默认情况下,如果在新的父元素中,则从0开始。

4 个答案:

答案 0 :(得分:2)

您的HTML标记无效。您需要使用li而不是</li>关闭<li>。之后,您将按预期获得0

<强> Fiddle Demo

如果要获取DOM中当前单击的li元素的索引,可以使用:

$("li").click(function(){
    console.log($(this).index('li'));
});   

如果您点击4上课程li,这将为您four

<强> Fiddle Demo

答案 1 :(得分:1)

尝试,

var cache = $("li");

cache.click(function(){
  console.log(cache.index( $(this)));
});

请阅读 here ,详细了解.index()


根据您的新要求,您可以这样做,

$("li").click(function(){
 alert($(this).closest('ul').children('li').index($(this)));
});

DEMO

答案 2 :(得分:1)

简单地使用index()方法将使用它的父ul列表记录索引号,但如果使用index('li'),则它将记录所有li列表中的索引。所以,你可以像这样使用:

$("li").click(function(){
  console.log($(this).index('li'));
});

但是这将记录所有文档列表中的索引号,因此将类添加到要从中获取索引号的列表:

<ul class="myIndx">
  <li>0<li>
  <li>1<li>
  <li>2<li>
  <li>3<li>
</ul>
<ul class="myIndx">
  <li class="four">0<li>  # again 0
  <li>1<li>  # again 1
</ul>

然后像这样使用:

$(".myIndx li").click(function(){
  console.log($(this).index('li'));
});

答案 3 :(得分:0)

通过正确关闭<li>代码(使用</li>),当我点击四个时,我会得到“0”。

See CodePen