如何使用 jQuery 访问数据属性

How to access data attribute using jQuery

我正在努力解决可能是 jQuery

的一个非常简单的问题

我有 html 这样的:

<div class="star-rating" data-star-rating="5.0"></div>
<div class="star-rating" data-star-rating="2.0"></div>

我有一些 javascript 需要根据每个元素的星级进行处理,目前看起来像这样:

$('.star-rating').jRate({
    startColor : '#ccc',
    endColor : '#ccc',
    readOnly : true,
    rating : <value of data-star-rating>
});

我想用与当前正在处理的元素相关的数据属性值替换 <value of data-star-rating>

我认为这行得通 $(this).data('starRating') 但它似乎行不通

在这种情况下如何访问数据属性的值?

你必须使用这个:

$(this).attr('data-star-rating');

你也可以用这个:

$(this).data('star-rating');

编辑

再次阅读问题。评论是正确的,您应该遍历 .star-rating 数组以将 jRate 应用于每个元素,请原谅我的误解。

$('.star-rating').each(function () {       
    $(this).jRate({
        startColor: '#ccc',
        endColor: '#ccc',
        readOnly: true,
        rating: $(this).data('star-rating')
    });
});

因为有不止一个元素具有 class "star-rating" 所以你需要遍历元素并且 forEach 循环将使当前迭代元素进入循环,这样你就可以使用该元素.并应用 JRate。

 $('.star-rating').forEach(function(dateRating){
  $(dateRating).jRate({
  startColor : '#ccc',
  endColor : '#ccc',
  readOnly : true,
  rating :  $(dateRating).attr("data-star-rating")
 });
});

$(this) 不引用调用 jRate 函数的元素。

如果只有一个元素具有 class

,您可以使用选择器
$('.star-rating').jRate({
    startColor : '#ccc',
    endColor : '#ccc',
    readOnly : true,
    rating : $('.star-rating').data('star-rating')
});

对于多个元素:

迭代所有具有 class star-rating 的元素,并使用相应元素的 rating 值单独附加插件 jRate

$('.star-rating').each(function () {
    $(this).jRate({
        startColor: '#ccc',
        endColor: '#ccc',
        readOnly: true,
        rating: $(this).data('star-rating')
    });
});

JSFiddle Demo未找到该插件的 CDN link,因此在 JavaScript 窗格本身添加了缩小代码

$(this).data('star-rating') 如果你从一个函数 return 它会起作用。

$('.star-rating').jRate({
    startColor : '#ccc',
    endColor : '#ccc',
    readOnly : true,
    rating : function () { return $(this).data('star-rating'); }
});