Ric*_*ick -2 javascript jquery
说实话,我不知道我的问题是否与我正在使用的插件相关的jQuery有关.
我使用插件RateYo(http://prrashi.github.io/rateYo/)在我们的网站上显示星星.需要显示的星星数量在div的属性中给出:
<div id="rating-avg" class="rateyo" rating="<?php echo $avg_rating; ?>" preset="true"></div>
Run Code Online (Sandbox Code Playgroud)
然后,我通过调用home.js调用插件RateYo,其中包含:
jQuery.noConflict()(function($){
$(document).ready(function() {
$(".rateYo").rateYo({
rating: $(this).attr('rating'),
readOnly: $(this).attr('preset')
});
});
Run Code Online (Sandbox Code Playgroud)
});
不幸的是,这不起作用.该插件确实启动并创建星号,但不使用变量$(this).attr('rating')和$(this).attr('preset').不显示评级,而是显示空星.
当我使用以下代码时,评级显示完美:
$("#rating-avg").rateYo({
rating: $("#rating-avg").attr("rating"),
readOnly: $("#rating-avg").attr("preset")
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,我需要插件才能按类启动,而不是id.我们在网站上有不同数量的评级,因此无法通过ID选择它们.
有谁看到我做错了什么?
您的价值this不正确,并且您使用的是错误的大写字母.你可以让它像这样工作:
$(".rateyo").each(function() {
var item = $(this);
item.rateYo({
rating: item.attr('rating'),
readOnly: item.attr('preset')
});
});
Run Code Online (Sandbox Code Playgroud)
请注意,您应该使用HTML5数据属性而不是您自己的自定义属性:
<div id="rating-avg" class="rateyo" data-rating="<?php echo $avg_rating; ?>" data-preset="true"></div>
$(".rateyo").each(function() {
var item = $(this);
item.rateYo({
rating: item.data('rating'),
readOnly: item.data('preset')
});
});
Run Code Online (Sandbox Code Playgroud)