Функция щелчка JQuery и время ожидания - PullRequest
2 голосов
/ 28 июня 2011

Я построил эту функцию для прокрутки галереи.Галерея должна самостоятельно прокручивать следующее изображение каждые 6000 мс, но если пользователь нажимает на миниатюру, он должен перейти непосредственно к этой миниатюре и затем сбросить таймер на 6000 мс.

Мой код не работает, потому что я не думаю, что правильно понял функцию повторного запуска JQuery.Не совсем уверен, что я делаю.

var timerp = null;

$('.thumbs').click(function() {
         clearTimeout(timerp);
         $('.cornerimgfocus').removeClass('cornerimgfocus');
         $('#P' + $(this).attr('id')).addClass('cornerimgfocus');
     }, function gallery() {
        clearTimeout(timerp);
        timerp = setTimeout(function() {
            var islide = $('.cornerimgfocus');
            $(islide).removeClass('cornerimgfocus');                    
            if(islide[0]==$('.cornerimg:last')[0]) {
            var nextslide =  $('.cornerimg').first();
            }
            else {
            var nextslide = $(islide).next();
            }
             gallery();
        }, 6000);
    });

Есть идеи?

Чудесный

Кстати, щелчок мышью работает отлично, у меня нет только тайм-аутполучил правильно.

Я попробовал это.Еще ничего.Клик все еще работает, но функция тайм-аута не работает.

$('.thumbs').click(function() {
         clearTimeout(timerp);
         $('.cornerimgfocus').removeClass('cornerimgfocus');
         $('#P' + $(this).attr('id')).addClass('cornerimgfocus');
         timerp = setTimeout(function() {
         $('#' + $(this).attr('id')).next().click()
         }, 3000)

    });

Я думал, что если бы я добавил .next (). Click (), это бы активировало эту функцию щелчка, но это не так.Как нам этого добиться.

Ответы [ 2 ]

3 голосов
/ 28 июня 2011

Вы передаете две функции методу click () , который не поддерживается.Кроме того, похоже, что вы хотите setInterval () вместо setTimeout () , и вы не добавляете класс cornerimgfocus к следующему слайду, когда тикает время.Попробуйте:

var timerp = null;

$('.thumbs').click(function() {
    if (timerp) {
        window.clearInterval(timerp);
    }
    $('.cornerimgfocus').removeClass('cornerimgfocus');
    $('#P' + $(this).attr('id')).addClass('cornerimgfocus');
    gallery();
});

function gallery()
{
    timerp = window.setInterval(function() {
        var islide = $('.cornerimgfocus');
        islide.removeClass('cornerimgfocus');
        var nextSlide;
        if (islide[0] == $('.cornerimg:last')[0]) {
            nextslide = $('.cornerimg').first();
        } else {
            nextslide = islide.next();
        }
        nextSlide.addClass('cornerimgfocus');
    }, 6000);
}

gallery();  // Start the animation.
0 голосов
/ 28 июня 2011

Похоже, вы пытаетесь выбрать элемент дважды:

var islide = $('.cornerimgfocus');
$(islide).removeClass('cornerimgfocus');

Во второй строке вы можете использовать:

islide.removeClass('cornerimgfocus');

Не знаю, вызвало ли это вашу проблему,

Макс

...