Слайдер jquery не останавливается мгновенно с помощью mousedown и mouseup

Ссылка ниже предназначена для копирования слайдера jquery, я хочу сделать скольжение плавным, но когда я сокращаю время в setinterval (скажем, 200), слайдер не реагирует на событие mouseup мгновенно, и слайды останавливаются через секунду или две после mouseup срабатывает. Я также попытался использовать остановку на анимации jquery, но это не помогло. Вот ссылка. http://jsfiddle.net/WwT54/ А пока через каждые полсекунды слайд смещается на 10 пикселей, я хочу, чтобы он выглядел плавно.

$("#popUpInnerArrowLeft").mousedown(function (event) {

    movetoleft();
});

var into, into2;

function movetoleft() {
    function moveit() {
        $(".thumbsInnerContainer").animate({
            left: '-=10px'
        });
    }

    into = setInterval(function () {
        moveit();
    }, 500);

}

$(document).mouseup(function (event) {
    clearInterval(into);

});



//for the right arrow

$("#popUpInnerArrowRight").mousedown(function (event) {
    movetoright();
});

function movetoright() {

    function moveit2() {
        $(".thumbsInnerContainer").animate({
            left: '+=10px'
        });
    }

    into2 = setInterval(function () {
        moveit2();
    }, 500);

}

$(document).mouseup(function (event) {
    clearInterval(into2);
});

1 ответ

Проверьте это (это то, что вы хотите):

var into, into2, unit = '';

$("#popUpInnerArrowLeft").click(function (e) {  
    e.preventDefault();
    unit = false;
    movetoleft();
});

//for the right arrow
$("#popUpInnerArrowRight").click(function (e) {
    e.preventDefault();
    unit = true;
    movetoright();
});

function moveit() {    

    $(".thumbsInnerContainer").stop(true,true).animate({
        left: ((unit == true)? '+=':'-=') + '10px'
    },{easing:'linear'});
}

function movetoright() {        
    into = setInterval(function () {
        moveit();
    }, 300);
}

function movetoleft() {    
    into = setInterval(function () {
        moveit();
    }, 300);
}

$(document).mouseup(function (event) {
    clearInterval(into);    
});

рабочая скрипка здесь: http://jsfiddle.net/WwT54/2/

Другие вопросы по тегам