Свойство jquery для автоматического увеличения css при нажатии и удерживании кнопки мыши - PullRequest
1 голос
/ 29 января 2012

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

как то так:

var timeoutId = 0;

$('#left').mousedown(function() {
    timeoutId = setTimeout(myFunction, 1000);
}).bind('mouseup mouseleave', function() {
    clearTimeout(timeoutId);
});

function myFunction() {
 var left = parseInt($("#menuElem").css('left')) + 10;
 $("#menuElem").animate({
    'left' : left + 'px'
 });

}

Я хочу, чтобы myFunction повторялась снова и снова, пока не будет запущено событие mouseup или mouseleave.

ура

1 Ответ

2 голосов
/ 29 января 2012

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

Так что тебе нужно что-то вроде этого, я думаю

var mouseIsDown = false;

$('#button').mousedown(function(){
    mouseIsDown = true;
    incrementValue;
});

$('#button').mouseup(function(){
    mouseIsDown = false;
});

Тогда эта функция будет выглядеть так:

function incrementValue() {
    whatever++;
    if(mouseIsDown){
        setTimeout("incrementValue()", 20);
    }
}

При нажатии мыши переменная mouseIsDown устанавливается в значение true и запускает цикл, который продолжает увеличиваться (с любым интервалом, в течение которого вы устанавливаете параметр времени в setTimeout()), пока mouseIsDown не станет ложным, что происходит под мышкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...