Непрерывная mousedown jQuery

У меня есть следующие фрагменты кода

$(document).mousedown(function(event) {
    doSomething();
}

Я могу успешно захватить событие mousedown.

Я пытаюсь сделать следующее:

  • Захват первого события mousedown
  • Я хочу определить, продолжает ли пользователь удерживать мышь, поэтому я могу сделать что-то еще.

Ответы

Ответ 1

Что-то вроде

var mouseStillDown = false;

$(document).mousedown(function(event) {
    mouseStillDown = true;
    doSomething();
});

function doSomething() {
    if (!mouseStillDown) { return; } // we could have come back from
                                     // SetInterval and the mouse is no longer down
    // do something

    if (mouseStillDown) { setInterval("doSomething", 100); }
}

$(document).mouseup(function(event) {
    mouseStillDown = false;
});

Ответ 2

var int00; // declared here to make it visible to clearInterval.

$('#trigger').mousedown(function(){
    int00 = setInterval(function() { repeatingfunction(); }, 50);
}).mouseup(function() {
    clearInterval(int00);
});

function repeatingfunction() {
    // This will repeat //
}

Вы также можете поместить clearInterval в событие mouseleave.

Ответ 3

Вы реализуете некоторую рекурсию!

var mouseisdown = false;

$(document).mousedown(function(event) {
    mouseisdown = true;
    doSomething();
}).mouseup(function(event) {
    mouseisdown = false;
});

function doSomething(){
    //Code goes here
    if (mouseisdown)
        doSomething();
}

Ответ 4

Вам нужно сделать что-то вроде mouseDown, начать что-то делать и продолжать делать это до тех пор, пока не будет запущено событие mouseUp.

Ответ 5

используйте событие mousedown для установки флага и mouseup для отмены флага. Затем вы можете просто проверить флаг, чтобы убедиться, что он установлен.

exmaple

var mouseDownFlag = false;
$(document).mousedown(function(event) {
     mouseDownFlag = true;
     someFunc();
}
$(document).mouseup(function(event) {
     mouseUpFlag = true;
}
var someFunc = function(){
     if(mouseDownFLag){//only run this function when the mouse is clicked
     // your code
         setTimeout("somefunc()", 1000); //run this function once per second if your mouse is down.
     }
}

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

Ответ 6

$(document).ready(function(){

  var mouseStillDown = false;

  $('#some_element').mousedown(function() {
    do_something();
  }).mouseup(function() {
    clearInterval(mouseStillDown);
    mouseStillDown = false;
  });

  function do_something() {

    // add some code here that repeats while mouse down

    if (!mouseStillDown) {
      mouseStillDown = setInterval(do_something, 100);
    }

  }

});

Ответ 7

target.addEventListener('mousedown', event => {
    target.addEventListener('mousemove',doStuff);
});
target.addEventListener('mouseup', event => {
    target.removeEventListener('mousemove',doStuff);
});
function doStuff(event){
    // code
}

Я нашел это намного удобнее.