是否有一个JQuery函数(或插件)一次处理all mouse events?
例如,我可以使用$("*").click()
来处理页面中的所有点击事件,但我想知道是否有以下功能:
$("*").mouseEvent("event type", function(){
// handle all events based on their event type in one listener
});
答案 0 :(得分:6)
您可以使用委派事件处理通过事件传播侦听所有鼠标事件。您可以将多个事件名称传递给同一个事件处理程序。然后,您可以在事件触发时查看事件参数,以查看在哪个DOM对象上发生了哪种类型的事件。
$(document).on("mouseup mousedown click mousemove", function(e) {
// e.type is the type of event
// e.target is the element the event originally occured in
});
这样做的好处是它适用于页面中的所有元素,甚至是在安装事件处理程序后添加的动态对象。
以这种方式执行此操作的唯一缺点是您通常无法阻止事件的默认行为,因为它可能已由直接附加到对象的事件处理程序处理(除非您可以阻止使用{{ 1}}因为他们显然在事件传播之后才开火。