jquery.rating Рейтинг к каждой фотографии
Подключен данный плагин, вопрос в следующем есть галерея изображений supersized, как видно из кода при наведении на блок okoloPan появляется рейтинг, который получает через ajax рейтинг соответствующего изображения, и вставляем его в то место которое отвечает за отображение закрашенных звезд. Вопрос почему после первого отображения рейтинга (правильного для данного изображения) он начинает отображаться для каждого последующего изображения?
</script>
<!--Панель задач-->
<div id="okoloPan">
<div id="panelZa">
<div class="rating">
<input id="val" type="hidden" name="val" value=""/>
<input type="hidden" name="votes" value="2"/>
<input type="hidden" name="vote-id" value="voteID"/>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('#zagr').hover(function() {
$('#zagr').css('background-image', 'url(images/zagr.png)');
},
function() {
$('#zagr').css('background-image', 'url(images/zagr2.png)');
});
$('#redak').hover(function() {
$('#redak').css('background-image', 'url(images/redak.png)');
},
function() {
$('#redak').css('background-image', 'url(images/redak2.png)');
});
$('#panelZa').hide();
$('#okoloPan').mouseenter(function() {
$('#panelZa').fadeIn(1000);
var slide_com = $("li[class*='activeslide']").attr("comment");
var com = { com : slide_com };
$.ajax({
type: 'POST',
url: 'action/queryReiting.php',
data: com,
success: function(data) {
$('#val').attr('value', data[0]);
$('#zag').attr('href', data[1]);
$('div.rating').rating({
image: 'images/stars.png',
loader: 'images/ajax-loader.gif',
url: 'rating.php'
});
},
dataType: "json"
});
});
$('#okoloPan').mouseleave(function() {
$('.rating').html('');
$('#panelZa').fadeOut(1000);
});
});
</script>
|
Ссылка на описание скрипта
|
Makkssimka,
Вероятно 1. одинаковые id у всех звёзд 2. функция установки звёзд неиспользует замыкание. |
А можно как-нибудь по-подробнее, а то я делаю только первые шаги, могу код самого скрипта выложить если нужно!!!
|
Makkssimka,
Возможно запрос на сервер только для первой фотографии происходит var slide_com вот это меняется или всегда одно и тоже? |
Makkssimka,
смотреть на месте проще было бы |
var slide_com через alert выводится для каждой фотографии правильное значение, проверял!
|
Дело в том что, если не наводить для первой фотографии и перейти на второю, то выведется рейтинг соответственно второй, и опять для всех. То есть значение не сбрасывается!!!
|
Когда рейтинг виден в коде создается следующий блок:
<div class="vote-wrap">
<div class="vote-hover" style="padding: 0px 4px; height: 32px; width: 160px;">
<div class="vote-block">
<div class="vote-stars" style="height: 32px; width: 160px; background: url("images/stars.png") repeat scroll left top transparent;"></div>
<div class="vote-active" style="height: 32px; width: 160px; background: url("images/stars.png") repeat scroll left bottom transparent;"></div>
</div>
</div>
<div class="vote-result">2 голоса</div>
<div class="vote-success"></div>
</div>
На месте: <input id="val" type="hidden" name="val" value=""/> <input type="hidden" name="votes" value="2"/> <input type="hidden" name="vote-id" value="voteID"/> |
Makkssimka,
тогда возможно сам плагин непосылает запрос без клика по звёздам . проинициировали его потом он работает на автомате без клика по звёздам новую информацию незапрашивает |
А как послать повторный запрос, если это можно сделать?
|
Makkssimka,
Попробуйте такой вариант сначала инициализация , потом запрос
$(document).ready(function() {
$('#zagr').hover(function() {
$('#zagr').css('background-image', 'url(images/zagr.png)');
},
function() {
$('#zagr').css('background-image', 'url(images/zagr2.png)');
});
$('#redak').hover(function() {
$('#redak').css('background-image', 'url(images/redak.png)');
},
function() {
$('#redak').css('background-image', 'url(images/redak2.png)');
});
$('div.rating').rating({
image: 'images/stars.png',
loader: 'images/ajax-loader.gif',
url: 'rating.php'
});
$('#panelZa').hide();
$('#okoloPan').mouseenter(function() {
$('#panelZa').fadeIn(1000);
var slide_com = $("li[class*='activeslide']").attr("comment");
var com = { com : slide_com };
$.ajax({
type: 'POST',
url: 'action/queryReiting.php',
data: com,
success: function(data) {
$('#val').attr('value', data[0]);
$('#zag').attr('href', data[1]);
var send = $('div.rating').data('rating');
send['send']();
},
dataType: "json"
});
});
$('#okoloPan').mouseleave(function() {
$('.rating').html('');
$('#panelZa').fadeOut(1000);
});
});
|
Всем спасибо за помощь! Может кому поможет, решил следующим образом:
<script>
$(document).ready(function() {
$("#supersized li[class*='slide']").each(function (i){
slide_com = $(this).attr('comment');
com = { com : slide_com };
var valu;
$.ajax({
type: 'POST',
url: 'action/queryReiting.php',
data: com,
success: function(data) {
valu = data[0];
$('.rating').append('<div class="reit" id="rating-'+i+'"><input type="hidden" name="val" value="'+valu+'"/></div>');
$('#rating-'+i+'').rating();
$('#rating-'+i+'').hide();
},
dataType: "json"
});
});
$('#okoloPan').hover(function() {
slide_class = $("li[class*='activeslide']").attr("class");
number = slide_class.match(/\d+/);
$("div[id*='"+number+"']").fadeIn(1000);
},
function() {
$("div[id*='"+number+"']").fadeOut(1000);
});
});
</script>
Может коряво, подскажите знающие что можно исправить? |
Makkssimka,
а вариант из 12 поста пробовали? |
Просто скрипт ждет ответа от сервера, а перед этим вычисляет среднее значение из уже имеющегося, и так как мы делаем запрос к скрипту, и нулем и проголосовать не получается, как будто мы уже проголосовали 0!!!
|
| Часовой пояс GMT +3, время: 03:32. |