остановка на щелчке - PullRequest
       7

остановка на щелчке

1 голос
/ 06 апреля 2011

привет, у меня есть страница с jcarousellite, показывающая некоторые изображения и автоматически прокручивающаяся каждые 5 секунд. Я хочу остановить прокрутку, когда нажимаю на любое изображение в карусели

вот что я пытаюсь сделать

$(document).ready(function() {
    $('.slider_images').jCarouselLite({
        btnNext: "#next",
        btnPrev: "#prev",
        auto:  3000         
    }); 

    $(".slider_images img").click(function(){


        $('.slider_images').jCarouselLite({
            btnNext: "#next",
            btnPrev: "#prev",
            scroll: false       
        }); 


    });
});

Ответы [ 6 ]

1 голос
/ 24 мая 2011

Извините за очень поздний ответ.Моя проблема была решена.Мы можем очень легко добиться свойства stop on click, изменив опцию pauseOnHover в jcarousellite.Если вы видите реализацию pauseOnHover, это примерно так:

o.pauseOnHover ? ul.hover(function (){ paused == 1 }, function (){paused=0}) : "";

мы можем добиться остановки при нажатии, изменив ul.hover на ul.click

o.pauseOnHover ? ul.click(function (){ paused == 1 }, function (){paused=0}) : "";

Хорошего дня.

0 голосов
/ 04 декабря 2013
$(".mycarousel").trigger('stopCarousel');

Если вы используете новейшую версию jcarousel https://github.com/kswedberg/jquery-carousel-lite/

Это событие по какой-то причине отсутствует в их документации, хотя pauseCarousel имеет значение.

0 голосов
/ 28 октября 2011

Это остановит автоматическое продвижение всех каруселей на странице. Я убиваю все, что использует тайм-аут здесь. Это сработало для меня:

$(".slider_images img").click(function(){
    var x = setTimeout("");
    for (var i = 0 ; i < x ; i++)
    clearTimeout(i);
}
0 голосов
/ 01 мая 2011

Добавьте это в начало файла

var timers = new Array();

измените

setInterval(function(){go(curr+o.scroll)},o.auto+o.speed)  

на

timers.push(new Array( this.className, setInterval(function(){go(curr+o.scroll)},o.auto+o.speed)));

чтобы остановить прокрутку

var classToStop = ".TestClass"; 

for(var i=0; i < timers.length; i++)
{
    if("."+timers[i][0] == uploadifyClass)
    window.clearInterval(timers[i][1])
}
0 голосов
/ 06 апреля 2011

Я хотел не согласиться с scheffield и / или найти способ обойти использование этого плагина, но я должен с ним согласиться - потребуется переписать исходный код, чтобы сделать то, что вы хотели. В качестве альтернативы вы можете рассмотреть цикл jquery . У него уже есть методы «пауза» и «стоп».

0 голосов
/ 06 апреля 2011

Я некоторое время читал код и обнаружил, что автоматическая прокрутка реализована с помощью setTimeout:

if(o.auto)
    setInterval(function() {
        go(curr+o.scroll);
    }, o.auto+o.speed);

Если вы используете jCarouselLite во второй раз, это не остановит setTimeout. Чтобы остановить setTimout, вы должны вызвать window.clearTimeout:

var timeoutId = window.setTimeout(function(){...}, 100);

window.clearTimeout(timeoutId);

Это невозможно, поскольку код jcarousel не предоставил вам эти timeoutId. Вы можете поговорить с разработчиком или изменить код самостоятельно.

...