Javascript 如何使用jQuery绑定并发事件

Javascript 如何使用jQuery绑定并发事件,javascript,jquery,event-handling,mouseevent,keyboard-events,Javascript,Jquery,Event Handling,Mouseevent,Keyboard Events,如何将同步事件绑定到jQuery中的选择器 我的意思不是如何捕捉某个元素上的单击或悬停,而是如何在两个事件同时发生的情况下捕捉两个事件。例如,鼠标悬停并按下键,或单击并按下键,如shift+单击等 提前感谢。Jquery bind 通过包含由空格分隔的每个事件类型,可以一次绑定多个事件类型: $('#foo').bind('mouseenter mouseleave', function() { $(this).toggleClass('entered'); }); 您无法同时捕获鼠标事件

如何将同步事件绑定到jQuery中的选择器

我的意思不是如何捕捉某个元素上的单击或悬停,而是如何在两个事件同时发生的情况下捕捉两个事件。例如,鼠标悬停并按下键,或单击并按下键,如shift+单击等

提前感谢。

Jquery bind


通过包含由空格分隔的每个事件类型,可以一次绑定多个事件类型:

$('#foo').bind('mouseenter mouseleave', function() {
  $(this).toggleClass('entered');
});

您无法同时捕获鼠标事件和键盘事件或任何事件,因为每个事件处理程序一次只能处理一个事件。

JQuery不提供任何现成的功能。您必须自己通过事件跟踪状态更改。

检测shift+单击很容易:检查
事件
对象的
shiftKey
属性

另一方面,检查按下的键+鼠标事件(同时)…:

  • 将事件绑定到keydown/keyup函数,该函数将
    事件.keyCode
    事件.which
    存储在变量中
  • 创建一个轮询器函数,该函数定期重置此变量,以便仅统计最后(例如:)300毫秒内的按键笔划
  • 添加一个
    mousedown
    事件,该事件检查最后记住的键代码(如果存在),并执行相关代码(如果适用)

有关处理多个事件(本例中为两个按键事件)的完整代码,请参见捕捉鼠标over+keydown与按住shift+click非常不同。这与我已经尝试过的最接近,除了定期重置变量,这听起来是个好主意。谢谢大家。他希望函数只在两个事件发生时启动。在那种情况下这行不通。