Вход

Просмотр полной версии : Проблема с галереей prettyPhoto


Vertex
26.07.2010, 14:48
$(document).ready(function(){
$("#gallery a[rel^='prettyPhoto']").prettyPhoto({theme:'dark_rounded'});
$("body").click(function() {
$("#randImg").fadeOut(1000, function() {
getRandImg();
});
$("#randImg").fadeIn(1000);
});

function getRandImg()
{
$.getJSON("/randImg.php", {v: 1}, function(img){
$("#randImg").html(img.img);
});
}
});



<div id="gallery">
<ul id="randImg">
<li><a href="/img/company/gallery/large/image1.jpg" rel="prettyPhoto[gallery1]"><img src="/img/company/gallery/prew/image1.jpg" alt="Picture 1 title" /></a></li>
<li><a href="/img/company/gallery/large/image2.jpg" rel="prettyPhoto[gallery1]"><img src="/img/company/gallery/prew/image2.jpg" alt="Picture 1 title" /></a></li>
<li><a href="/img/company/gallery/large/image3.jpg" rel="prettyPhoto[gallery1]"><img src="/img/company/gallery/prew/image3.jpg" alt="Picture 1 title" /></a></li>
<li><a href="/img/company/gallery/large/image4.jpg" rel="prettyPhoto[gallery1]"><img src="/img/company/gallery/prew/image4.jpg" alt="Picture 1 title" /></a></li>
</ul>
</div>

все работает, но вот когда скрипт на сервере отдает случайные изображения из директории - получается DOM обновляется, и галерея отказывается работать.

1) как это исправить?
2) как сделать чтобы функция запускалась не по клику, а к примеру: каждые 5 сек?

Спасибо

x-yuri
26.07.2010, 20:58
1) поискать другую или написать свою
2) setInterval (http://javascript.ru/setInterval)

Vertex
27.07.2010, 01:49
$("#gallery a[rel^='prettyPhoto']").prettyPhoto({theme:'dark_rounded'});

ну я как понимаю, на ссылки попадающие под условие вешается .prettyPhoto();

затем ссылки обнавляются, и как заставить поновой DOM проверить, и повесить обработчик на новые ссылки?

x-yuri
27.07.2010, 05:53
ну да, еще есть третий вариант, пофиксить этот плагин. Для этого надо для начала разобраться как он работает ;)

Vertex
27.07.2010, 15:09
ладно, придется опять что-то новое изобретать

werdes
27.07.2010, 19:06
"function getRandImg()"
попробуйте поставить ее перед вызовом а не после

у жиквери есть фишка одна http://api.jquery.com/live/
позволяет держать события

мне кажется, лучше обрабатывать новые элементы после загрузки аяксом, есть параметр .ajaxSuccess

"каждые пять секунд" -создаете цикл с задержкой, можно использовать
http://api.jquery.com/delay/