JavaScript - игнорировать тайм-аут при клике - PullRequest
0 голосов
/ 29 марта 2011

У меня есть слайд-шоу, которое отлично работает, оставляя 3-секундный промежуток между изображениями.

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

Я хочу пропустить 3-секундный тайм-аут при нажатии на одну из этих ссылок, а затем перезапустить тайм-аут после изменения изображения.

Код ниже:

$(document).ready(function() {

var images=new Array();
var totalimages=6;
var totallinks=totalimages;
var nextimage=2;

while (totallinks>0) {
    $(".quicklinks").prepend("<a href='#' class='"+(parseInt(totallinks))+"' onclick='return false'>"+(parseInt(totallinks))+"</a> ");
    totallinks--;
}

function runSlides() {
    if(runSlides.opt) {
        setTimeout(doSlideshow,3000);
    }
}

function doSlideshow()
    {
        if($('.myImage').length!=0)
            $('.myImage').fadeOut(500,function(){slideshowFadeIn();$(this).remove();});
        else
            slideshowFadeIn();
    }

function slideshowFadeIn()
    {
        if(nextimage>=images.length) 
            nextimage=1;

        $('.container').prepend($('<img class="myImage" src="'+images[nextimage]+'" style="display:none;">').fadeIn(500,function() {
            runSlides();
            nextimage++;
        }));
    }

if(runSlides.opt) {} else {
    images=[];
    totalimages=6;
    while (totalimages>0) {
        images[totalimages]='/images/properties/images/BK-0'+parseInt(totalimages)+'.jpg';
        totalimages--;
    }
    runSlides.opt = true;
    runSlides();
}

$(".quicklinks a").live('click', function() {
    nextimage=$(this).attr("class");
});


});

1 Ответ

4 голосов
/ 29 марта 2011

Вы можете остановить тайм-аут, используя этот код:

var t = setTimeout(myFunction,3000);
clearTimeout(t);

Используя это, вы можете отменить тайм-аут, когда пользователь нажимает кнопку и вызывает функцию напрямую. Затем вы можете перезапустить тайм-аут.

Надеюсь, это поможет.

...