如何使用jQuery访问数据属性

Edd*_*Edd 5 javascript jquery custom-data-attribute

我正在努力解决可能是一个非常简单的jQuery

我有这样的HTML:

<div class="star-rating" data-star-rating="5.0"></div>
<div class="star-rating" data-star-rating="2.0"></div>
Run Code Online (Sandbox Code Playgroud)

我有一些javascript,需要根据每个元素的星级评分做一些事情,目前看起来像这样:

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

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

我认为这会起作用,$(this).data('starRating')但似乎没有

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

Que*_*ger 5

您也可以使用它:

$(this).data('star-rating');
Run Code Online (Sandbox Code Playgroud)

编辑

再看完这个问题.注释是对的,您应该遍历.star-rating数组以将jRate应用于每个元素,对不起我的误解.

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


Tus*_*har 4

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

如果只有一个元素具有该类,则可以使用选择器

$('.star-rating').jRate({
    startColor : '#ccc',
    endColor : '#ccc',
    readOnly : true,
    rating : $('.star-rating').data('star-rating')
});
Run Code Online (Sandbox Code Playgroud)

对于多个元素:

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

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

JSFiddle 演示没有找到该插件的 CDN 链接,因此在 JavaScript 窗格本身中添加了精简代码