Как да обвържете едновременни събития с jQuery

Как да свържа едновременни събития към селектор в jQuery?

Нямам предвид как да хванете Щракване ИЛИ върху някой елемент, а как да хванете две събития при условие, че И ДВЕТЕ се случват едновременно. Например преминаване на мишката и натискане на клавиш или щракване и натискане на клавиш, като shift+щракване и т.н.

Благодаря предварително.


person cincplug    schedule 27.10.2011    source източник
comment
Улавянето на мишката+клавиша е много различно от shift+щракването.   -  person Matt Ball    schedule 27.10.2011


Отговори (5)


Откриването на shift + щракване е лесно: Проверете свойството shiftKey на обекта event.

Проверка на натиснат клавиш + събитие на мишката (едновременно), от друга страна...:

  • Свържете събитие към функцията keydown/keyup, която съхранява event.keyCode или event.which в променлива
  • Създайте функция за анкетиране, която периодично нулира тази променлива, така че да се броят само натискания на клавиши през последните (пример:) 300 милисекунди
  • Добавете събитие mousedown, което проверява последния запомнен keyCode, ако съществува, и изпълнете съответния код, ако е приложимо.

За пълен код, който обработва множество събития (две събития натискане на клавиши в примера), вижте моят предишен отговор.

person Rob W    schedule 27.10.2011
comment
Е, това е най-близо до това, което вече опитах, с изключение на периодичното нулиране на променливата, което звучи като добра идея. Благодаря на всички. - person cincplug; 27.10.2011

Множество типове събития могат да бъдат обвързани наведнъж, като се включи всяко едно, разделено с интервал:

$('#foo').bind('mouseenter mouseleave', function() {
  $(this).toggleClass('entered');
});
person RASG    schedule 27.10.2011
comment
Той иска функцията да се активира само когато се случат двете събития. Това няма да работи в този случай. - person FRD; 08.01.2013

Jquery свързване

http://api.jquery.com/bind/

person marko    schedule 27.10.2011

Не можете да хванете събитие на мишка и събитие на клавиатура едновременно или каквото и да е събитие, това е така, защото всеки манипулатор на събития може да обработва само едно събитие в даден момент.

person Vlad Balmos    schedule 27.10.2011

JQuery не предлага такава функционалност веднага. Трябва сами да проследите промените в състоянието чрез събития.

person offtehcuff    schedule 27.10.2011