附加听众的$(el).on(...)或$(document).on(el,...)之间是否有区别?

时间:2014-03-14 18:12:21

标签: jquery

两种格式:

$(document).on('click', ".class", ...)

$('.class').on('click', ...

是否有任何差异,是否优先于另一个?或者他们是一回事吗?

2 个答案:

答案 0 :(得分:1)

当您使用第一个时,您不知道.class是否存在。

但是在第二种情况下,你知道它有DOM元素。它只是表现得像.bind()

所以

1.动态追加元素时,使用第一种格式。

2.如果你知道元素已经存在于DOM

中,请使用第二种格式

答案 1 :(得分:1)

在案例1中,只有document被赋予了指令;它负责代表其子元素注意点击。捕获事件的工作已被委派。它被称为 event delegation

在案例2中,每个具有名为class的类的元素都已单独给出指令。如果动态创建新.class,则他们无法在您的案例中回复任何事件,例如click

所以基本上,当你的元素被动态添加到DOM并使用DOM中现有元素的直接点击处理程序时,使用事件委托。