jQuery:获取事件处理程序中元素索引的最佳方法

jQuery:获取事件处理程序中元素索引的最佳方法,jquery,Jquery,在事件处理程序中检索元素索引的最佳方法是: <ul> <li>a</li> <li>b</li> <li>c</li> </ul> $("ul li").click(function() { // what is the index of the list item that was clicked? }); a b c $(“ul li”)。单击(函数(){ //单击的列表项

在事件处理程序中检索元素索引的最佳方法是:

<ul>
  <li>a</li>
  <li>b</li>
  <li>c</li>
</ul>

$("ul li").click(function() {
  // what is the index of the list item that was clicked?
});
  • a
  • b
  • c
$(“ul li”)。单击(函数(){ //单击的列表项的索引是什么? });
换句话说,如果我单击“c”项,是否有从事件处理程序中获取索引2的最佳实践


我知道我可以通过查看元素的父元素来确定元素的位置,但我不知道是否有更好或更简洁的方法。

调用。

这将为您提供以前列表项的数量

$(this).prevAll("li").size();
编辑vie Felix。

是的,有一种“索引”方法

所以你可以写:

$("#ul_id li").click(function() {
  var index = $("#ul_id li").index(this);
});

以下是文档:

prev
仅选择上一个兄弟姐妹。你想要
prevAll
@felix…你说得对。我是凭记忆做的。我将编辑它,它将给出整套
  • s的索引,包括早期的
    s。不,我试过了。这个很好用。事实上,我是直接从文档中获取的。它只能在页面的第一个
    中正常工作
    $(“ul li”)
    选择每个
  • ,而不考虑父项。我明白你的意思,但我故意使用了一个简单的css选择器,因为他的示例代码也很简单。显然,在实际应用程序中,您可能希望使用带有ID或类的选择器。但除了使用这个简单的选择器之外,我实际上更喜欢index()语法,因为其他开发人员更清楚正在发生的事情。“在选择器中,获取此元素的索引”这在类似的上下文中对我不起作用。索引始终为0。可能是因为我的选择器是
    $(“.foo”)
    ,而不是像
    $(“.container.foo”)
    那样的作用域?Adam的
    $(“.foo”).index(this)
    解决方案确实有效。