Показать сообщение отдельно
  #1 (permalink)  
Старый 04.02.2013, 13:07
Аспирант
Отправить личное сообщение для daima Посмотреть профиль Найти все сообщения от daima
 
Регистрация: 01.08.2012
Сообщений: 59

jquery галерея
имеем html
<html lang="ru">
<head>
<meta charset="utf-8" />
<title>Новости</title>
<style>
ul {margin:0;padding:0}
.gallery img,
.gallery {width:340px; height:225px;display:block;}
.gallery>a {position:absolute; list-style:none; width:100%; height:100%;}
.naviBlock {text-align: center; z-index: 100; position: absolute; bottom: 10px; left:10px; height:7px;background: url("../img/png24.png")}
.naviBlock a { display: block; float:left; width: 5px; height: 5px; margin-right:1px; border:2px solid #0099ff; cursor: pointer; position: relative; background:transparent;}  
.naviBlock a.selected {background:#0099ff;}
p {cursor:pointer}
</style>
 
</head>
<body>
<h1>Галерея 1</h1>
            <ul class="gallery">
                <li><img src="img/ra1.jpg" alt="" /></li>
                <li><img src="img/ra2.jpg" alt="" /></li>
                <li><img src="img/ra3.jpg" alt="" /></li>
                <li><img src="img/ra4.jpg" alt="" /></li>
            </ul>
<p>стоп гал.1</p>
<h1>Галерея 2</h1>
            <ul class="gallery">
                <li><img src="img/dep1.jpg" alt="" /></li>
                <li><img src="img/dep2.jpg" alt="" /></li>
                <li><img src="img/dep3.jpg" alt="" /></li>
            </ul>
<p>стоп гал.2</p>            
 
<script src="js/jquery-1.8.3.min.js"></script>
 
<script src="js/jquery.fading_gallery.js"></script>
 
<script>
//формируем галерею
$(".gallery").fading_gallery({delay: 5000,naviBlock: 'naviBlock', insertTo: 'append'});
 
//при клике на P нужно заморозить соответствующую галерею
$("p").click(function(){
        $(this).text("stop");
        $(".gallery").eq($(this).index("p")).stop();
})
</script>
 
</body>
</html>


скрипт галереи:


(function($){
$.fn.fading_gallery = function(options){
 
    var types = ['vertical', 'horizontal', 'opacity'];
    var opts = $.extend({}, $.fn.fading_gallery.defaults, options);
     
    this.each(function(){
       
        var self = $(this);
        var elems = self.children();
        var visible, autochange, naviBlock;
        var loaded = 0;
        var width = self.outerWidth();
        var height = self.outerHeight();
        var offsets = [];
         
        if (self.css('position') != 'absolute' && self.css('position') != 'relative') self.css('position', 'relative');
        if (elems.size() < 2) opts.naviBlock = opts.delay = false;
             
         
        if (opts.delay){
            opts.delay = parseInt(opts.delay);
            if (opts.delay < 100) opts.delay = opts.delay * 1000;
        }
        if (elems.size()) sortElems();
        $(this).hover(function(){
            clearInterval(autochange);
        },function(){
             if (opts.delay) autochange = setTimeout(function(){ getItem({data: {index: randomIndex(loaded, visible)}}) }, opts.delay);
        });
        function sortElems(){
             
            var index = 0;
            elems.each(function(){
                 
                 
                $(this).css({position: 'absolute', zIndex: elems.size() - index, visibility: 'visible', opacity: 0})
                       countLoaded();
                       
                 
                index++;
            });
             
            sortElems = null;
        }
 
        function countLoaded(){
             
            loaded++;
       
            if (loaded == elems.size()){
                 
               
                if (opts.naviBlock) createNaviBlock();
                else {
                    visible = 0;
                    elems.first().animate({opacity: 1}, opts.speed);
                    if (opts.delay) autochange = setTimeout(function(){ getItem({data: {index: randomIndex(loaded, visible)}}) }, opts.delay);
               }
               
               countLoaded = null;
            }
        }
         
         
        function createNaviBlock(){
             
            naviBlock = $(document.createElement('div')).addClass(opts.naviBlock).css('display', 'none');
           
            for (var i = 0; i < loaded; i++){
                 var navItem = $(document.createElement(opts.navItem)).bind('click', {index: i}, getItem);  
                 naviBlock.append(navItem);
            }
             
            switch (opts.insertTo){
                case 'before': naviBlock.insertBefore(self); break;
                case 'append': self.append(naviBlock); break;
                case 'prepend': self.prepend(naviBlock); break;
                default: naviBlock.insertAfter(self);
            }
             
            self = null;
             
            naviBlock.fadeIn('fast', function(){$(this).children().first().trigger('click')});
             
            createNaviBlock = null;
        }
         
        function getItem(event){
           
            var index = event.data.index;
             
            if (index != visible){
                 
                if (autochange) clearInterval(autochange);
                 
                if (naviBlock){
                    naviBlock.children('.selected').removeClass('selected');
                    $(naviBlock.children().get(index)).addClass('selected');
                }
                 
                var show = elems.get(index);
                 
                if (typeof visible != 'undefined'){
                     
                    var hide = elems.get(visible);
                     
                    $(show).css({display: 'block',zIndex: loaded - 1, opacity: 1});
                     
                    var animate = (opts.animateType == 'random')?types[randomIndex(Math.floor(Math.random() * (types.length - 1)))]:opts.animateType;
                   
                    switch (animate){
                        case 'horizontal':
                            var direction = (visible > index)?-width:width;
                             
                            $(hide).animate({marginLeft: direction}, opts.speed, function(){$(show).css({zIndex: loaded}); $(this).css({opacity: 0})});
                        break;
                        case 'vertical':
                            var direction = (visible > index)?height:-height;
                             
                            $(hide).animate({marginTop: direction}, opts.speed, function(){$(show).css({zIndex: loaded}); $(this).css({opacity: 0})});
                        break;
 
                        default: $(hide).animate({opacity: 0}, opts.speed, function(){$(show).css({zIndex: loaded}); $(this).css({display: 'none'})});
                    }
                     
                }else $(show).css({display: 'block'}).animate({opacity: 1}, opts.speed, function(){$(this).css({zIndex: loaded})});
                 
                visible = index;
            }
             
            if (typeof event.preventDefault != 'undefined') event.preventDefault();
            if (opts.delay) autochange = setTimeout(function(){ getItem({data: {index: randomIndex(loaded, visible)}}) }, opts.delay);
        }
        /** Останавливаем слайдинг **/
        function stop(){alert("stop it");
            clearInterval(autochange);        
        }
    });
}
 
 
 
function randomIndex(loaded, visible){
    var rand = (visible+1<loaded)? visible+1:0
    return rand;
}
 
$.fn.fading_gallery.defaults = {
                   naviBlock: false,
                   delay: false,
                   speed: 500,
                   insertTo: '',
                   navItem: 'a',
                   animateType: 'opacity'
               };
})(jQuery);



Здесь через определенный интервал времени меняются картинки. Мне нужно чтобы была ф-я, которая выключила бы замену картинок у конкретной галереи и ф-я, которая бы включила. Я написал функцию (там где /** Останавливаем слайдинг **/) и попробовал привязать ее к клику на тег P, но почему-то не срабатыват. В фаирбаге никаких ошибок тоже нет.

Взываю о помощи
Ответить с цитированием