2

我有 jQuery 代码来处理动态添加到页面的元素的取消绑定和绑定事件处理程序。该代码有一个包装函数,该函数将现有处理程序与具有给定 id 前缀的元素解除绑定,然后绑定事件处理程序,以便任何现有元素都具有该处理程序,并且任何新添加的具有相同 id 前缀的元素也可以获取它。显然,这会对添加新元素时已经存在的具有 id 前缀的元素进行额外的解除绑定/绑定。取消绑定是为了防止现有元素获得分配给它们的多个相同类型的处理程序。

自从最初编写此代码以来,我已经了解了必要的 jQuery 委托函数,它似乎与我上面所做的完全一样。

委托函数是否会比我做得更好,以至于值得我花时间重写我当前的工作代码以利用它?我所说的更好是指性能、内存使用或其他一些衡量标准。

4

1 回答 1

1

当您使用 时.delegate(),您应该选择一个祖先元素作为指定后代事件的侦听器。这很好,因为从一开始您就绑定了一个侦听器,该侦听器应该在您的页面上或多或少“永久”,无论从其后代树中添加或删除了多少有效目标。

这当然比动态页面要好,并且比在添加或删除元素时.click使用一系列.bindand on 元素要好。.unbind

但是,它可能等同于使用.bind()一种选择祖先元素的方式来侦听对指定后代的点击。.bind()我对性能优势还不够熟悉。

--

顺便说一句,它与您的问题没有特别相关,它是一个比 性能更好的功能.live(),所以如果您想使用,.live()我强烈建议您将.delegate()其作为更好的选择。

于 2011-10-06T18:15:39.037 回答