事件处理程序绑定匿名函数与具名函数的区别

11

我知道jQuery有.on()方法,而且考虑到我使用的是版本大于或等于1.7的jQuery,.bind()不应该再使用。

我想知道的是:使用.bind()将匿名函数或命名函数添加到事件处理程序之间是否存在任何差异?

例如:

// Anonymous function
$(".warning").bind("click", function(){
   alert("Hello");
});

// Named function
$(".warning").bind("click", foo);

function foo(){
   alert("Hello");
}

假设我在页面上有100个class为warning的div。函数.bind()将使用匿名函数将新函数附加到每个处理程序,但它是否与JavaScript和jQuery内部的命名函数完全相同?

谢谢。

1个回答

10

性能上不会有明显的差别。

一个主要的区别是,使用命名函数时,您还可以选择性地解除绑定函数,而不仅仅是解除与事件类型相关联的所有函数。

当然,这也有助于避免代码重复。


如果有动态DOM元素被添加了很多次,事件处理程序应该每次它们被添加时都要附加 - 那么可能会有性能差异吗(我实际上是在问,这不是一句讽刺的话)? - Yuval A.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接