如果我需要使用 jQuery 将多个事件附加到同一个元素.on()
,我应该将所有事件合并到一个调用中并使用区分它们event.type
吗?还是我应该.on()
为每个事件单独打电话?
组合事件:
$('#main').on('mouseenter mouseleave click', '.myElement', function(event) {
if (event.type == 'click') {
return false;
} else if (event.type == 'mouseenter') {
$(this).addClass('active');
} else if (event.type == 'mouseleave') {
$(this).removeClass('active');
}
}
单独的事件:
$('#main').on('click', '.myElement', function(event) {
return false;
}
$('#main').on('mouseenter', '.myElement', function(event) {
$(this).addClass('active');
}
$('#main').on('mouseleave', '.myElement', function(event) {
$(this).removeClass('active');
}
哪个最快?
[编辑] 附加细节:显然我们需要考虑两个方面,第一个是页面完成加载并且正在设置这些事件处理程序时,仅使用一次.on()
调用显然会更快。然而,第二个方面是这些事件何时真正被触发,当鼠标悬停或单击时.myElement
,我认为更重要,因为它会发生很多次,而.on()
调用只会被调用一次(如果 DOM 发生变化,则调用更多,但仍然少于事件本身)。