2013-05-06 63 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