jQuery中的Unbind/bind vs. delegate:哪个是最好的解决方案



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

自从最初编写这段代码以来,我已经了解了jQuery委托函数的基本功能,该功能似乎与我上面所做的完全相同。

委托函数是否能更好地完成我已经完成的工作,从而值得我花时间重写当前的工作代码以利用它?我说的更好是指性能、内存使用或其他一些指标。

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

对于动态页面,这当然比.click要好,也比在添加或删除元素时使用一系列.bind.unbind要好。

但是,它可能等于以一种方式使用.bind(),选择侦听指定后代上的单击的祖先元素。我对.bind()不太熟悉,不能肯定地说性能方面的好处。

,

作为一个与你的问题没有特别相关的题外话,它是一个比.live()性能更好的函数,所以如果你曾经试图使用.live(),我会强烈推荐.delegate()作为更好的选择。

相关内容

最新更新