Javascript 从单击的链接返回值时出现问题

Javascript 从单击的链接返回值时出现问题,javascript,jquery,Javascript,Jquery,我在这样的页面上有一组链接 <a href='' class='contact' data-index='1'>One</a> <a href='' class='contact' data-index='2'>One</a> <a href='' class='contact' data-index='3'>One</a> 我也试过这样的方法: var m_data = $("a#contact").attr("data

我在这样的页面上有一组链接

<a href='' class='contact' data-index='1'>One</a>
<a href='' class='contact' data-index='2'>One</a>
<a href='' class='contact' data-index='3'>One</a>
我也试过这样的方法:

var m_data = $("a#contact").attr("data-index");
$("a#contact").click(function() {
  var data = $(this).data('index');
});
但数据没有定义

请问我该怎么做?谢谢。

#
是一个id选择器。这应该是独一无二的。在jQuery中使用id选择器时,它将始终返回第一个元素,因为它不希望找到更多的项

更改代码

<a data-index="1" class="contact">Whatever</a>

$("a.contact").click(function() {
    var data = $(this).data("index");
});
不管怎样 $(“a.contact”)。单击(函数(){ var数据=$(此).data(“索引”); });
正如Eskat0n所提到的,由于jQuery 1.6,jQuery通过
data()
方法自动获取
data-
属性,因为jQuery 1.6.x数据属性的值通过jQuery填充到与元素相关联的数据中,所以如果您的html看起来像
,那么您的代码应该可以工作:

$("a.contact").click(function() {
  var data = $(this).data('index');
  // data is "5"
});

正如您所看到的,这里有一个更正:
#
用于按id获取元素,该id必须是唯一的。将id的类intead用于多个链接元素。

您需要。指示如果链接列表是页面上的唯一列表,并且如果链接中混合了其他DOM元素,则如何使用它。

这是正确答案,但可能值得注意的是,OP必须使用问题中概述的第二种方法(使用
This
,而不是重用选择器).1这实际上是一个很好的观点,如果OP是在寻找一种方法来获取容器中链接的索引,那么这可能要容易得多(:
$("a.contact").each(function()
{
    $(this).click(function()
    {
        var data = $(this).attr('data-index');
    });
});