Непрерывная 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
}
Я нашел это намного удобнее.