我有一个包含未知数量列表项的无序列表。它看起来像这样:
<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 ...所以请不要花哨的东西:)
非常感谢任何帮助,谢谢!
答案 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中可用,所以你应该可以毫无问题地使用它。