2013-04-04 40 views
0

我正在嘗試使用名爲jRating的好插件,當我點擊星星時,它應該會進行某種AJAX調用。它是這樣做的,具有正確的費率值,但data-id屬性(它將作爲AJAX調用文件中的MySQL查詢的輸入)未定義(NaN)。這是代碼:使用jQuery讀取「data-id」屬性

演示HTML

<div class="exemple"> 
    <!-- in this exemple, 12 is the average and 1 is the id of the line to update in DB --> 
    <div class="basic" data-average="12" data-id="1"></div> 
</div> 

jRating.jquery.js

//Line 60: 
//idBox = parseInt($(this).attr('data-id')), // old version, idBox=Nan 
idBox = parseInt($(this).data("id")); // my version, still idBox=Nan 

編輯: 主PHP頁面的頭部jQuery的電話:

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $(".exemple").jRating({ 
     length:10, 
     decimalLength:0, 
     onSuccess : function(){ 
     alert('Success : your rate has been saved :)'); 
     }, 
     onError : function(){ 
     alert('Error : please retry'); 
     } 
    }); 
    }); 
</script> 

我似乎無法弄清楚什麼是錯的。請幫我找到它。 謝謝!

SOLUTION

作爲@ZachL認可, $(this),在jRating.jquery.js指的是div.exemple,而該數據ID是在div.basic。

因此改變$(this).data("id")$(this).find('.basic').data("id")工作。

+1

我想象一下'$(this)'的問題。當你記錄下來時,你會得到什麼? – 2013-04-04 22:28:28

+0

'this'指向'div.basic'或'div.exemple'還是別的? – biziclop 2013-04-04 22:29:13

+0

我同意扎克。 '$(this)'可能不是你認爲它的元素,因爲$(this).data(「id」)'應該工作。 – Steve 2013-04-04 22:29:34

回答

3

據我所知,該腳本正在尋找<div class="exemple">上的數據屬性,但它只存在於<div class="basic">

你可以試試idBox = parseInt($(this).find('.basic').data("id"));

+0

是的,這工作!我想知道代碼在他們的演示頁面中是如何工作的(或者不是)。謝謝大家,幫助:) – void 2013-04-04 22:46:43

1

假設您的問題不是$(this),請使用$(this).data("id")獲取data-id屬性。確保你使用的是jQuery 1.6或更新的版本。

+2

這不是問題,OP已經嘗試過^^ – moonwave99 2013-04-04 22:30:01

+0

他試過$(this).attr('data-id')',而且它不是檢索數據屬性的首選方法。 jQuery的'.data()'方法是。 – 2013-04-04 22:31:00

+0

@ moonwave99編輯。 – Mooseman 2013-04-04 22:31:50