2011-05-20 95 views
4
$('body').delegate(".foo", 'click', function(){}); 

什么是更好的方法来绑定一个动作?

$(".foo").live('click', function(){}); 

我更喜欢第二个,但也许是没有任何好处,首先使用?

+3

另一个问题,你需要'活'功能吗?否则你可以使用$(“。foo”)。click(function(){});句法。 – RvdK 2011-05-20 13:38:58

+0

是的,我需要'生活'功能。我需要它整个文件。 – McKey 2011-05-20 13:45:55

+1

从下面的答案,简而言之,使用'委托()'。实际上,今天早上我正在看这个。 – Bojangles 2011-05-20 13:46:32

回答

3

代表就像它完成相同的任务live,但没有相关的缺点改组后的live。最值得注意的是live附加到文档,并与链接有问题。

与现场相比,代表还具有性能优势,这是一个优点。

+0

这就是我要求的。谢谢。 – McKey 2011-05-20 13:53:35

1

取决于你要做什么。针对不同的目的存在不同的方法。

  • delegate()
    附加一个处理程序,以一个或多个事件的选择相匹配的,现在或将来,基于一组特定的根元素的所有元素。 委托是使用.live()方法的替代方法,可以将事件委托的每个绑定都绑定到特定的DOM元素。
  • live()
    将事件处理程序附加到与当前选择器匹配的所有元素,现在和将来。
  • bind()
    将处理程序附加到元素的事件。
0

好,现场和代表之间的区别是:

  • 直播功能不能 链接中使用。直播功能需要是直接在选择器/元素上使用的 。

  • 没有在性能方面 一个更大的差别,如果不是用活 功能指定的环境 的。上下文表示您在 特定节点内设置搜索限制。如果您没有指定 带有实时功能的上下文,则默认情况下它会将处理程序附加到文档 ,并且在执行时 会遍历DOM,从而导致 性能问题。

相关问题