2011-07-06 6 views
3

Есть ли какие-либо события, созданные непрерывным щелчком мыши, то есть, не отпуская кнопку мыши 1? Если нет, сообщите мне.Непрерывное событие щелчка мыши

Спасибо и приветствую.

+1

Я не думаю, что это имеет какое-либо отношение к Java, поэтому я удалил этот тег. Замените его, если я ошибаюсь. – lonesomeday

+0

Событие 'mousedown'? –

+0

нет спасибо ... –

ответ

14

Событие mousedown запускается при нажатии кнопки мыши. Если вы ищете событие, которое срабатывает многократно, а кнопка удерживается нажатой, вам не повезло, но вы можете использовать событие mousedown для многократного выполнения действия и остановки при срабатывании события mouseup.

Например, вы можете использовать функцию setInterval для многократного вызова функции при нажатии кнопки мыши, а затем использовать clearInterval для остановки при отпускании кнопки мыши. Вот пример (с помощью JQuery):

var interval; 
$("#elementToClick").mousedown(function() { 
    interval = setInterval(performWhileMouseDown, 100); 
}).mouseup(function() { 
    clearInterval(interval); 
}); 
function performWhileMouseDown() { 
    $("#output").append("<p>Mouse down</p>"); 
} 

Вы можете увидеть это работает в этом example fiddle.

+0

спасибо. На самом деле я использую калитки и пытаюсь получить ajaxEvent, с помощью которого я могу выполнить выполнение на стороне сервера. –

+0

Обратите внимание, что это не учитывается, когда пользователь «mousedown» находится в целевом элементе, но затем перемещает мышь от элемента и «mouseup» находится где-то в другом месте. В этом случае 'performWhileMouseDown' будет продолжать работать неограниченно. Чтобы решить эту проблему, вместо этого вы можете вместо этого привязать к событию 'mouseup'' document': http://jsfiddle.net/An2as/ –

+0

@BillDami. Вы также можете просто установить событие mouseout для элемента clearInterval. Затем и «mouseup», и «mouseover» останавливают повторение. На всякий случай вам понадобится событие mouseup для другого элемента. – Deanie

0

Не существует такого мероприятия.

Что вы можете реализовать для достижения этой цели - это функция, которая оценивает время, прошедшее между (первым) щелчком мыши и последующим выпуском мыши.

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

+0

Почему downvote (без комментариев)? – Francesco

2

Существует JQuery plugin: LongClick

Longclick прессовой & удерживать кнопку мыши «долго нажмите» специальное мероприятие для JQuery 1.4.x.

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

+0

ваша ссылка не работает. –

0

Согласно spec,

Клик определяется как MouseDown и MouseUp над тем же местом экрана. Последовательности этих событий: MouseDown, MouseUp, нажмите

Так нет, нет «непрерывный щелчок», потому что щелчок события Дискретного в результате последовательности действий.

Что вы, вероятно, захотите сделать, это получить mousedown, установить таймер, и если в течение некоторого времени не появятся мыши или mousemove, вызовите некоторое поведение.

0

Да, вы можете сделать это с помощью onmousemove= movefunction(event):

Что я сделал, чтобы решить эту проблему заключается в следующем:

Во-первых, создать onmousedown() событие, которое устанавливает глобальную переменную 1 при запуске.

Во-вторых, создайте событие onmouseup(), которое устанавливает эту глобальную переменную в 0 при срабатывании.

Затем, используйте событие onmousemove() для запуска в div, где я хочу, чтобы поведение мыши было выполнено, но только если установленная ранее глобальная переменная установлена ​​в 1.

пример того, как использовать onmousemove(): http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onmousemove

Done.

Смежные вопросы