Javascript获取所有锚链接的索引

时间:2015-04-08 12:31:59

标签: javascript

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;
});

演示2:http://jsfiddle.net/43tmut7t/16/

2 个答案:

答案 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'))});
  }
})