Foros del Web » Programando para Internet » Jquery »

Ayuda para expertos en JQUERY - funcion publica en PLUGIN

Estas en el tema de Ayuda para expertos en JQUERY - funcion publica en PLUGIN en el foro de Jquery en Foros del Web. Hola a todos! es la primera vez que posteo asi que tratare de ser lo mas concreto posible. estoy trabajando sobre un sitio web que ...
  #1 (permalink)  
Antiguo 08/06/2010, 11:13
 
Fecha de Ingreso: noviembre-2002
Mensajes: 3
Antigüedad: 21 años, 5 meses
Puntos: 0
Exclamación Ayuda para expertos en JQUERY - funcion publica en PLUGIN

Hola a todos! es la primera vez que posteo asi que tratare de ser lo mas concreto posible.
estoy trabajando sobre un sitio web que desarrollaron terceros, y estoy perdido con un plugin.

estamos usando el plugin que ya tenia el sitio, el cual hace un FADER de banners en el home. incluye boton de next, previous y navegador

adjunto el plugin

Código:
// slideshow plugin 
jQuery.fn.fadeGallery = function(_options){ 
   var _options = jQuery.extend({ 
      slideElements:'div.slideset > div', 
      pagerLinks:'div.pager a', 
      btnNext:'a.next', 
      btnPrev:'a.prev', 
      btnPlayPause:'a.play-pause', 
      pausedClass:'paused', 
      playClass:'playing', 
      activeClass:'active', 
      activePagerClass:'active', 
      pauseOnHover:true, 
      autoRotation:false, 
      autoHeight:false, 
      switchTime:3000, 
      duration:650, 
      event:'click' 
   },_options); 
 
   return this.each(function(){ 
      // gallery options 
      var _this = jQuery(this); 
      var _slides = jQuery(_options.slideElements, _this); 
      var _pagerLinks = jQuery(_options.pagerLinks, _this); 
      var _btnPrev = jQuery(_options.btnPrev, _this); 
      var _btnNext = jQuery(_options.btnNext, _this); 
      var _btnPlayPause = jQuery(_options.btnPlayPause, _this); 
      var _pauseOnHover = _options.pauseOnHover; 
      var _autoRotation = _options.autoRotation; 
      var _activeClass = _options.activeClass; 
      var _activePagerClass = _options.activePagerClass; 
      var _pausedClass = _options.pausedClass; 
      var _playClass = _options.playClass; 
      var _autoHeight = _options.autoHeight; 
      var _duration = _options.duration; 
      var _switchTime = _options.switchTime; 
      var _controlEvent = _options.event; 
 
      // gallery init 
      var _hover = false; 
      var _prevIndex = 0; 
      var _currentIndex = 0; 
      var _slideCount = _slides.length; 
      var _timer; 
      if(!_slideCount) return; 
      _slides.hide().eq(_currentIndex).show(); 
      if(_autoRotation) _this.removeClass(_pausedClass).addClass(_playClass); 
      else _this.removeClass(_playClass).addClass(_pausedClass); 
 
      // gallery control 
      if(_btnPrev.length) { 
         _btnPrev.bind(_controlEvent,function(){ 
            prevSlide(); 
            return false; 
         }); 
      } 
      if(_btnNext.length) { 
         _btnNext.bind(_controlEvent,function(){ 
            nextSlide(); 
            return false; 
         }); 
      }       
      if(_slideCount < 2){   //by rod 
         _autoRotation=false; 
         //$('.gallery-nav').hide(); 
//         alert('son banners:'+ _pagerLinks.length); 
      }; 
      if(_pagerLinks.length > 1) { 
         _pagerLinks.each(function(_ind){ 
            jQuery(this).bind(_controlEvent,function(){ 
               if(_currentIndex != _ind) { 
                  _prevIndex = _currentIndex; 
                  _currentIndex = _ind; 
                  switchSlide(); 
               } 
               return false; 
            }); 
         }); 
      } 
 
      // play pause section 
      if(_btnPlayPause.length) { 
         _btnPlayPause.bind(_controlEvent,function(){ 
            if(_this.hasClass(_pausedClass)) { 
               _this.removeClass(_pausedClass).addClass(_playClass); 
               _autoRotation = true; 
               autoSlide(); 
            } else { 
               if(_timer) clearTimeout(_timer); 
               _this.removeClass(_playClass).addClass(_pausedClass); 
            } 
            return false; 
         }); 
      } 
 
      // gallery animation 
      function prevSlide() { 
         _prevIndex = _currentIndex; 
         if(_currentIndex > 0) _currentIndex--; 
         else _currentIndex = _slideCount-1; 
         switchSlide(); 
      } 
      function nextSlide() { 
         _prevIndex = _currentIndex; 
         if(_currentIndex < _slideCount-1) _currentIndex++; 
         else _currentIndex = 0; 
         switchSlide(); 
      } 
      function refreshStatus() { 
         if(_pagerLinks.length) _pagerLinks.removeClass(_activePagerClass).eq(_currentIndex).addClass(_activePagerClass); 
         _slides.eq(_prevIndex).removeClass(_activeClass); 
         _slides.eq(_currentIndex).addClass(_activeClass); 
      } 
      function switchSlide() { 
         _slides.eq(_prevIndex).fadeOut(_duration); 
         _slides.eq(_currentIndex).fadeIn(_duration); 
         if(_autoHeight) _slides.eq(_currentIndex).parent().animate({height:_slides.eq(_currentIndex).outerHeight(true)},{duration:_duration,queue:false}); 
         refreshStatus(); 
         autoSlide(); 
      } 
 
      // autoslide function 
      function autoSlide() { 
         if(!_autoRotation || _hover) return; 
         if(_timer) clearTimeout(_timer); 
         _timer = setTimeout(nextSlide,_switchTime+_duration); 
      } 
      if(_pauseOnHover) { 
         _this.hover(function(){ 
            _hover = true; 
            if(_timer) clearTimeout(_timer); 
         },function(){ 
            _hover = false; 
            autoSlide(); 
         }); 
      } 
      refreshStatus(); 
      autoSlide(); 
   }); 
}

y la llamada a dicho plugin seria la siguiente:

Código :


Código:
$('div.gallery').fadeGallery({ 
      slideElements:'div.slider > div', 
      pagerLinks:'ul.gallery-nav li', 
      activeClass:'active-slide', 
      pauseOnHover:true, 
      autoRotation:true, 
      autoHeight:false, 
      switchTime:5000, 
      duration:650 
   });


lo que necesito hacer, es simplemente llamar la funcion prevSlide() o nextSlide() una vez que se inicializo el plugin.

ejemplo: tengo un excuchador de eventos en un banner flash.. que al terminar determinada accion debe llamar a nextSlide() para que cambie de banner..

actualmente esta funcion solo funciona si existe un elemento <a> con id "next" y en el caso que necesito no hay ningun A. solo la llamada a la funcion

espero haber sido claro a pesar de lo perdido que estoy.
Saludos y muchas gracias

Etiquetas: plugin
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:10.