我无法弄清楚为什么我无法在jquery中选择属性

时间:2013-08-07 00:46:59

标签: jquery attributes

我有一些像这样的输入标签:

<input data-role="none" id="TaskActionList.SpaceId" type="hidden" value="@Model.CombinedAvailableSpaces.Single().SpaceId" name="" data-inputname="TaskActionList" data-propertyname="SpaceId" data-singlespace="true"/>        

(我的页面上有大约3个完全相同的输入标签)

我想从输入标记的最后一个属性获取最后一个属性值:'true'。我已经尝试过这个jquery,但我一直得到一个未定义的值:

$('input').attr('data-singlespace')

我应该回到“真实”这个词,但我得到了不确定。为什么会这样?

3 个答案:

答案 0 :(得分:2)

最好使用.data()方法访问自定义属性

$('input').data('singlespace')

问题也可能是因为有多个输入。

将代码放在$.each

$('input').each(function() {
    console.log($(this).data('singlespace'));
});

或者使用eq根据索引定位特定输入,因为选择器太具体了。

$('input').eq(1).data('singlespace') ;
// Gets the 2nd input

答案 1 :(得分:1)

.attr() method从jQuery对象的第一个元素返回指定的属性。在您的情况下,jQuery对象$('input')选择页面上的每个输入元素,因此您尝试从第一个输入获取该属性,其中(可能)未定义属性。

更改选择器以确保获得正确的元素。

答案 2 :(得分:1)

你也可以试试这个:

$('input[data-singlespace]').data('singlespace');