如何通过javascript / jquery获取某些元素的订单号?
<ul>
<li>Anton</li>
<li class="abc">Victor</li>
<li class="abc">Simon</li>
<li>Adam</li>
<li>Peter</li>
<li class="abc">Tom</li>
</ul>
abc类有3xli。现在我需要获得Simon li的订单(序列)号。
提前致谢
答案 0 :(得分:30)
使用Jquery的 index() 方法
答案 1 :(得分:7)
你可以使用.index()
的选择器这样做,如下所示:
$('li:contains(Simon)').index('.abc'); //returns 1, it's 0 based
//Or this...
$('li').filter(':contains(Simon)').index('.abc'); //returns 1
如果没有选择器,您将获得2
,即父级中<li>
的索引,无论该类如何。 You can view a quick demo here。请记住,这是一个基于0的索引,在某些情况下可能需要+ 1
显示结果,取决于您的需要。
答案 2 :(得分:2)
对于那些喜欢You Might Not Need Jquery方法的人,以下是方法:
function index(el) {
if (!el) return -1;
var i = 0;
do {
i++;
} while (el = el.previousElementSibling);
return i;
}
IE8及更少:
function index(el) {
if (!el) return -1;
var i = 0;
do {
if (el.nodeType === 1) i++;
} while (el = el.previousSibling)
return i;
}
答案 3 :(得分:1)
只是修复了@Nick Craver的答案。我尝试使用.index('.class_name')
并保持返回-1以找不到。我当时做的是.index( $('.class_name') )
,它给了我预期的结果。我想它需要一个dom节点对象来获取它的值,而不仅仅是一个选择器。