Я получил этот код от: Jquery: эффект mousedown (при щелчке левой кнопкой мыши) удерживается) Это ведет себя так, что если я буду удерживать кнопку каждые 50 мс, это будет что-то делать.

var timeout = 0;
$('#button_add').mousedown(function () {
    timeout = setInterval(function () {
        value_of_something ++;
    }, 50);
    return false;
    });
});

Но я хочу выполнить эту часть, удерживая кнопку в нажатом положении в течение 1 секунды, и она будет непрерывно выполнять действие в течение 50 мс.

2
keisaac 24 Апр 2017 в 09:25

2 ответа

Лучший ответ

Как я уже сказал, вам нужно использовать setTimeout()

var timeout = 0;
$('#button_add').mousedown(function () {
    setTimeout(function(){
      timeout = setInterval(function () {
                   value_of_something ++;
                }, 50);         
    } , 1000);
    return false;
});

Jsfiddle

2
Mohamed-Yousef 24 Апр 2017 в 06:39

Пожалуйста, используйте этот код ... Вы должны очистить Timeout, когда пользователь mouseup:

var timeout = 0;

$('#button_add').mousedown(function() {
    oneSecondTimer = setTimeout(function() {
        timeout = setInterval(function() {
            value_of_something++;
        }, 50);
    }, 1000);

    return false;
});

$("#button_add").mouseup(function() {
    clearTimeout(oneSecondTimer);
});
-1
SolutionsWithUs 24 Апр 2017 в 06:44