2013-04-24 6 views
0

Я использую list_ticker plugin для прокрутки некоторых элементов списка.Можно ли приостановить плагин jQuery list_ticker на mouseenter?

Мне было интересно, можно ли приостановить тикер, когда мышь нависает над ним, чтобы пользователь успел прочитать содержимое (это всего лишь несколько слов, но они включают дату и время, которые кто-то может захотеть сделать примечание).

Спасибо, что посмотрели. Функция

JQuery:

/* List Ticker by Alex Fish 
// www.alexefish.com 
// 
// options: 
// 
// effect: fade/slide 
// speed: milliseconds 
*/ 

(function($){ 
    $.fn.list_ticker = function(options){ 

    var defaults = { 
     speed:4000, 
     effect:'slide' 
    }; 

    var options = $.extend(defaults, options); 

    return this.each(function(){ 

     var obj = $(this); 
     var list = obj.children(); 
     list.not(':first').hide(); 

     setInterval(function(){ 

     list = obj.children(); 
     list.not(':first').hide(); 

     var first_li = list.eq(0) 
     var second_li = list.eq(1) 

     if(options.effect == 'slide'){ 
      first_li.slideUp(); 
      second_li.slideDown(function(){ 
       first_li.remove().appendTo(obj); 
      }); 
     } else if(options.effect == 'fade'){ 
      first_li.fadeOut(function(){ 
       second_li.fadeIn(); 
       first_li.remove().appendTo(obj); 
      }); 
     } 
     }, options.speed) 
    }); 
    }; 
})(jQuery); 

Javascript:

$(document).ready(function() { 
    $('#next-ex').list_ticker({ 
     speed: 6000, 
     effect: 'fade' 
    }); 
}); 

HTML:

<ul id='next-ex'> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 

ответ

0

Очевидно, что существует п o такая функциональность, встроенная в этот плагин. Два варианта: google для более продвинутого плагина или быстрого и грязного исправления.

(function($){ 
    $.fn.list_ticker = function(options){ 

    var defaults = { 
     speed:4000, 
     effect:'slide' 
    }; 

    var options = $.extend(defaults, options); 

    return this.each(function(){ 

     var obj = $(this); 
     var list = obj.children(); 
     var stopped = false; //flag if we should stop ticking 
     list.not(':first').hide(); 

     obj.hover(function(){ //adding hover behaviour 
      stopped = true; 
     }, function(){ 
      stopped = false; 
     }); 


     setInterval(function(){ 
      if(stopped) {return;} //Quick check inside interval 

     list = obj.children(); 
     list.not(':first').hide(); 

     var first_li = list.eq(0) 
     var second_li = list.eq(1) 

     if(options.effect == 'slide'){ 
      first_li.slideUp(); 
      second_li.slideDown(function(){ 
       first_li.remove().appendTo(obj); 
      }); 
     } else if(options.effect == 'fade'){ 
      first_li.fadeOut(function(){ 
       second_li.fadeIn(); 
       first_li.remove().appendTo(obj); 
      }); 
     } 
     }, options.speed) 
    }); 
    }; 
})(jQuery); 

Рабочий пример http://jsfiddle.net/tarabyte/8zLuY/

+0

Это является фантастическим, он отлично работает! Спасибо! – Chris