2015-02-04 4 views
-2

Если честно, я не знаю, связана ли моя проблема с jQuery связанного с плагином, который я использую.

Я использую плагин RateYo (http://prrashi.github.io/rateYo/) для отображения звезд на нашем сайте. Число звезд, которые должны быть показаны, приведены в качестве атрибута DIV:

<div id="rating-avg" class="rateyo" rating="<?php echo $avg_rating; ?>" preset="true"></div> 

Затем я называю плагин RateYo путем вызова home.js, который содержит:

jQuery.noConflict()(function($){ 
$(document).ready(function() { 
    $(".rateYo").rateYo({ 
     rating: $(this).attr('rating'), 
     readOnly: $(this).attr('preset') 
    }); 
}); 

});

К сожалению, это не работает. Плагин запускает и создает звезды, но переменные $ (this) .attr ('rating') и $ (this) .attr ('preset') не используются. Рейтинг не отображается, но отображаются пустые звезды.

Когда я использую следующий код, рейтинг показан отлично:

$("#rating-avg").rateYo({ 
     rating: $("#rating-avg").attr("rating"), 
     readOnly: $("#rating-avg").attr("preset") 
    }); 

К сожалению, мне нужен плагин пнуть в классовом, а не ид. У нас есть переменное количество рейтингов на сайте, поэтому выбор их по идентификатору не является вариантом.

Кто-нибудь видит, что я делаю неправильно?

+0

http://www.w3.org/TR/CSS2/syndata.html#characters – Ejaz

+0

.rateYo! = .rateyo – Gogol

ответ

5

Ваше значение this не будет исправлено, и вы используете для своего имени неправильное использование капитализации. Вы, вероятно, может заставить его работать так:

$(".rateyo").each(function() { 
    var item = $(this); 
    item.rateYo({ 
     rating: item.attr('rating'), 
     readOnly: item.attr('preset') 
    }); 
}); 

Обратите внимание, вы, вероятно, следует использовать данные 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') 
    }); 
}); 
+0

Вот и все. Огромное спасибо! Думая об этом, я вижу ошибку в используемой логике. Помимо решения этой конкретной проблемы, я научился справляться с этим в будущем. Еще раз спасибо! – Rick

1

Вы ссылающийся на rateYo в вашем jQuery, в то время как атрибут класса содержит rateyo без капитала «Y».

+1

Это не единственная проблема, так как у них также есть проблема с использованием 'this'. – jfriend00

+1

Спасибо за ваш ответ Дэвид! – Rick

Смежные вопросы