如何使用jquery在一组选定元素中获取元素的顺序?

时间:2013-04-19 13:05:44

标签: javascript jquery

我需要在一组选定的元素中获取元素的顺序,例如:

<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元素添加一个数据顺序属性,但还有其他更简单或更快的方法吗?

4 个答案:

答案 0 :(得分:4)

试试这个

 $('#example').click(function (e) {
  var $this = $(this);
  var $index = $('li').index($this);
   alert($index + 1) //+1 because index start from 0
 });

fiddle here

注意:这会选择文档中的所有<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))
    });

http://jsfiddle.net/szGtd/

答案 2 :(得分:0)

如果您的ul标记全部包含在容器中,您可以执行以下操作:

var index = $('#container li').index($('#example')) + 1;

小提琴http://jsfiddle.net/DScxd/

答案 3 :(得分:0)

$("#example").click(function () {
  var index = $('li').index(this);
  console.log(index + 1)
});

请参阅http://jsfiddle.net/pAuMG/