使用jQuery读取“data-id”属性

时间:2013-04-04 22:26:48

标签: jquery html ajax

我正在尝试使用名为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

修改: jquery调用主php页面的标题:

<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")

2 个答案:

答案 0 :(得分:3)

据我所知,该脚本正在<div class="exemple">上查找数据属性,但它只存在于<div class="basic">上。

您可以尝试idBox = parseInt($(this).find('.basic').data("id"));

答案 1 :(得分:1)

假设您的问题不是$(this),请使用$(this).data("id")获取data-id属性。确保您使用的是jQuery 1.6或更新版本。