jQuery on() 语法的差异

Difference in jQuery on() syntaxes

从性能的角度来看,这两种语法之间有什么区别吗?或者我使用哪一种都没有关系?

$(document).on('click', '#button', function () {
//some code
});

$('#button').on('click', function () {
//some code
});

是的,性能有差异,功能也有差异。

第一种方式(委托事件)将在文档元素上绑定一个事件,该事件将捕获任何冒泡到它的点击,并检查目标元素是否与选择器匹配#button

第二种方式(直接事件)将在每个匹配选择器的元素上绑定一个事件 #button

(在选择器 #button 的特定情况下,当然不会超过一个元素。)

如果您稍后添加与选择器匹配的元素,以及当您希望为这些元素处理事件而无需再次绑定时,则主要使用委托事件。

您在使用委托事件时应该多加小心。由于该事件将捕获范围内发生的每次点击并每次都评估选择器,因此每次点击都会产生一些开销。如果您以这种方式绑定多个事件,则会有一堆选择器需要在每次点击时进行评估。