使用jQuery接收list元素的索引

时间:2011-09-22 19:02:04

标签: jquery list indexing

我有一个包含未知数量列表项的无序列表。它看起来像这样:

<ul id="keyvisualpager">
    <li><a><span>first</span></a></li>
    <li><a><span>second</span></a></li>
    <li><a><span>third</span></a></li>              
    <li><a><span>and so on</span></a></li>              
    <li><a><span>fsdfsf</span></a></li>             
    <li><a><span>asdad</span></a></li>              
</ul>

当用户点击链接时,我需要找出列表元素的索引并将其分配给变量。例如如果用户点击第二个链接(“秒”),变量应设置为“2”...

$('#keyvisualpager li a').click(function () { 

     // receive index of list element
     var mbr_index = ???;   


});

我必须使用jquery 1.2.1 ...所以请不要花哨的东西:)

非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:4)

也许您忽略了jQuery 1.0中已经提供.index(element) [docs]

var $items = $('#keyvisualpager li');

$items.find('a').click(function () { 
     var mbr_index = $items.index($(this).parent()) + 1; // one based index
});

原始回答:

这应该适用于jQuery 1.2:

var mbr_index = $(this).parent().prevAll().length + 1; // one based index

答案 1 :(得分:1)

您可以考虑使用each()手动分配点击次数。您可以迭代列表项并让索引可用。您可以在列表项中找到锚点并绑定其click方法。

$('#keyvisualpager li').each(function(index) {
    $(this).find('a').bind('click', function() {
        var mbr_index = index + 1; // indices start at 0
        ...
    });
});

each()在jQuery 1.0中可用,所以你应该可以毫无问题地使用它。