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

编辑:主 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 回答