1

jRatingと呼ばれる素敵なプラグインを使用しようとしています。これは、星をクリックすると何らかの AJAX 呼び出しを行うと思われます。正しいレート値でそれdata-idを行いますが、AJAX で呼び出されたファイルの MySQL クエリへの入力となる属性は未定義 (NaN) です。これはコードです:

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

edit : メイン 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>

何が悪いのかわからないようです。見つけるのを手伝ってください。ありがとう !

解決策:

@ZachL が認識し $(this)たように、jRating.jquery.js の は div.exemple を参照していましたが、data-id は div.basic にありました。

そのため、機能するように変更$(this).data("id")$(this).find('.basic').data("id")ました。

4

2 に答える 2

3

私が知る限り、スクリプトは のデータ属性を探しています<div class="exemple">が、 にしか存在しません<div class="basic">

あなたが試すことができますidBox = parseInt($(this).find('.basic').data("id"));

于 2013-04-04T22:43:12.007 に答える
1

問題が でないと仮定すると$(this)、 を使用$(this).data("id")して属性を取得しdata-idます。jQuery 1.6 以降を使用していることを確認してください。

于 2013-04-04T22:29:30.413 に答える