Jquery 1.4版支持.index()功能,但我们的旧环境仅支持1.3,所以在今年晚些时候升级之前我不能使用.index()。
所以,这是我使用传统的javascript与.length和jquery点击函数的混合来获取每个锚点的索引时的方法,但是我的Demo 1方法在点击时返回页面上的总锚点。
我需要你的帮助,使用onclick(可能没有参数)使这个函数非常简单,因为我需要在多个函数中使用它。
$("a").click(function() {
var links = document.links;
for (var i = 0; i < links.length; i++) {
var link = document.getElementsByTagName("a").length
alert(link)
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<a href="http://www.google.com">Google Link</a>
<a href="http://www.google.com">Google Link</a>
<ul>
<li><a href="http://www.google.com">Google Link</a>
</li>
<li><a href="http://www.google.com">Google Link</a>
</li>
</ul>
例如,如果我有至少1.4 jQuery,我会使用这种方法,这个演示中的结果是我正在寻找的预期行为:
$("a").click(function () {
var count = $(this).index('a');
alert('link' + count);
return false;
});
答案 0 :(得分:1)
你已经到了一半 - 只需将links
列表中的每个链接与this
进行比较:
$("a").click(function() {
var links = document.links;
for (var i = 0; i < links.length; i++) {
if (links[i] == this) {
alert('link ' + i);
return false;
}
}
});
<a href="">0</a>
<a href="">1</a>
<a href="">2</a>
<a href="">3</a>
<a href="">4</a>
答案 1 :(得分:1)
更有效的方法是在页面加载时添加 data - 属性(例如 data-linkIndex ),然后在单击链接时读取属性。它遍历链接一次,而不是每次单击链接,并直接从元素读取值,例如
$(function() {
for (var links=document.links, i=0, iLen=links.length; i<iLen; i++) {
links[i].setAttribute('data-linkIndex', i);
links[i].addEventListener('click', function(){console.log(this.getAttribute('data-linkIndex'))});
}
})