Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с галереей prettyPhoto (https://javascript.ru/forum/jquery/10881-problema-s-galereejj-prettyphoto.html)

Vertex 26.07.2010 14:48

Проблема с галереей prettyPhoto
 
$(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

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/


Часовой пояс GMT +3, время: 01:30.