在列表中查找元素的位置
我希望使用jQuery找到列表中单击元素的位置(即顺序)。
我有:
- Element 1
- Element 2
- Element 3
...
点击
怎么能实现这一目标?
非常感谢您的帮助!
使用index()
:
$("li").click(function() { var index = $(this).parent().children().index(this); alert("You clicked item " + index); });
索引从0开始。
更有效的Cletus答案版本,不需要找父母和孩子:
$("li").on("click", function() { var index = $(this).index(); alert(index); });
- Element 1
- Element 2
- Element 3
- Element 4
以前的答案很好。 2个补充:
当您的列表包含列表项时,例如:
那么你必须使用var index = $(this).parent().parent().children().index(this);
同样在上面的例子中,列表包含其他元素,如
,你可以在var index = $(this).parent().parent().children("li").index(this);
为“元素3”而不是索引4提供索引2。
也可以用纯JavaScript完成:
let = _this = this, indx = Array.prototype.slice.call(_this.parentElement.childNodes).indexOf(_this);
或者,如果您尝试使用除
CSS
类的CSS之外的有序html列表样式,如@Jan所述,请使用querySelectorAll('li')
而不是childNodes
。