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, время: 16:16. |