2013-05-06 44 views
0

我试图从下面的标记了第一个数据属性:的jQuery 1.8.1数据()错误检索HTML5数据属性

<button class="buttonMiddle" data-vid="1"> 
    <a href="#">who helped them</a> 
</button> 

<button class="buttonMiddle" data-vid="2"> 
    <a href="#">who helped them</a> 
</button> 

的JS,我唤出是:

var button1 = $('.buttonMiddle').get(0).data('vid'); 

console.log(button1); 

Chrome的控制台使我这个:

Uncaught TypeError: Object # has no method 'data'

我已经涵盖了基本的故障 - > jQuery是加载之前这个js文件,他们是机器人h在正式结束标签之前加载(因此不需要$(function() {// find data-attribute});

+2

'获得()'会得到你一个DOM元素 - 如果你想使用'。数据()'你需要一个jQuery对象,因为' .data()'是一个jQuery方法,所以使用'.eq()'将返回一个jQuery对象 – 2013-05-06 13:08:50

回答

6

尝试使用eq()代替get()这里:

var button1 = $('.buttonMiddle').eq(0).data('vid'); 
+0

完美,这就是解决方案!对于任何其他人来说,如果你想阅读更多关于@ wirey的解释,请点击此处查看 - > http://api.jquery.com/eq/ – 2013-05-06 16:04:47

+0

请注意使用$(选择器).data(<小写参数名>),无论大小写如何定义。或者在使用$(selector).attr(<完整参数名称>)时使用带有原始大小写的完整参数名称。 – QMaster 2014-06-08 20:15:29