2011-09-09 104 views
0

返回值我有这样问题从点击链接

<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> 

我试图单击时返回各个环节的数据索引值的页面上的链接设置,但每当我点击在每个链接上,总是返回第一个链接的数据索引,因为jQuery将选择页面上所有class ='contact'的链接。 我想弄清楚如何选择点击链接的数据索引。

我用的是这样的:

var m_data = $("a#contact").attr("data-index"); 

我也试过这样的事情:

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

但数据是不确定的。

请问我该怎么做?谢谢。

回答

6

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

更改代码

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

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

而作为Eskat0n提到,因为jQuery的1.6,jQuery将自动通过data()方法

+2

这是正确的答案,但可能值得注意的是OP将不得不使用问题中概述的第二种方法(使用'this'而不是重用选择器)。 –

+0

好点! (:编辑我的答案,包括这个'' – peirix

4

由于数据的jQuery的1.6.x的属性值填充与相关数据得到data-属性元素由jQuery,所以如果你的html看起来像<a class="contact" data-index="5"></a>你的代码应该工作:

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

正如你可以看到有更正:#用于通过id获得需要唯一的元素。使用id的class intead作为多个链接元素。

2
$("a.contact").each(function() 
{ 
    $(this).click(function() 
    { 
     var data = $(this).attr('data-index'); 
    }); 
}); 
2

你想要.index()This fiddle指示如果链接列表是页面上的唯一列表,并且还有其他DOM元素与链接混合在一起,它如何使用。

+0

+1这实际上是一个很好的观点,如果OP在获取容器中的链接索引之后,这可能更容易(: – peirix