我需要在一组选定的元素中获取元素的顺序,例如:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<ul>
<li>1</li>
<li id="example">2</li>
<li>3</li>
</ul>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
$('#example').click(function (e)) {
$this = $(this);
// some code
});
</script>
我需要知道所有li元素中$ this的顺序。例如,在这种情况下,代码应返回5.
我的第一个想法是遍历所有li元素并比较每个元素,但我认为这种方法很慢。我还可以为每个li元素添加一个数据顺序属性,但还有其他更简单或更快的方法吗?
答案 0 :(得分:4)
试试这个
$('#example').click(function (e) {
var $this = $(this);
var $index = $('li').index($this);
alert($index + 1) //+1 because index start from 0
});
注意:这会选择文档中的所有<li>
。具体而言,您可以将类/ ID提供给ul
并使用class / id selector $('.ulClass li').index($this);
答案 1 :(得分:1)
但由于计数从0开始,这将返回4.
$('#example').on('click',function(e){
$this = $(this);
console.log($("li").index(this))
});
答案 2 :(得分:0)
如果您的ul
标记全部包含在容器中,您可以执行以下操作:
var index = $('#container li').index($('#example')) + 1;
答案 3 :(得分:0)
试
$("#example").click(function () {
var index = $('li').index(this);
console.log(index + 1)
});