Jquery live() 与 delegate() [重复]

2024-01-30

我在这里和网上其他地方读过一些关于两者之间差异的帖子live() and delegate()。但是我还没有找到我正在寻找的答案(如果这是一个骗局,请告诉我)。

我知道之间的区别live and delegate就是它live不能在链中使用。我也在某处读到过delegate在某些情况下更快(更好的性能)。

我的问题是,在什么情况下你应该使用live代替delegate?

UPDATE

我已经设置了一个简单测试 http://jsperf.com/jquery-live-vs-delegate-vs-on查看性能差异。

我还添加了新的.on()在 jQuery 1.7+ 中可用

结果几乎总结了答案中所述的性能问题。

  • 不要使用.live()除非你的 jQuery 版本不支持.delegate().
  • 不要使用.delegate()除非你的 jQuery 版本不支持.on().

和...之间的不同.live() and .delegate()比两者之间大很多delegate() and .on().


我从不使用live;我考虑使用的好处delegate如此巨大以至于压倒性的。

其好处之一是live是它的语法非常接近bind:

$('a.myClass').live('click', function() { ... });

delegate但是,使用稍微更详细的语法:

$('#containerElement').delegate('a.myClass', 'click', function() { ... });

然而,在我看来,这似乎更明确地说明了实际发生的情况。你没有意识到从live事件实际上被捕获的示例document; with delegate,很明显事件捕获发生在#containerElement。你可以做同样的事情live,但语法变得越来越可怕。

为要捕获的事件指定上下文也可以提高性能。随着live例如,整个文档的每次点击都必须与选择器进行比较a.myClass看看是否匹配。和delegate,这只是其中的元素#containerElement。这显然会提高性能。

最后,live要求您的浏览器寻找a.myClass 目前是否存在. delegate仅在事件触发时查找元素,从而提供进一步的性能优势。


NB delegate uses live在幕后,所以你可以做任何事情live你可以用delegate。我的回答涉及它们,因为它们是常用的。

还要注意的是,两者都不是live nor delegate是现代 jQuery 中进行事件委托的最佳方式。新语法(从 jQuery 1.7 开始)是on http://api.jquery.com/on/功能。语法如下:

$('#containerElement').on('click', 'a.myClass', function() { ... });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jquery live() 与 delegate() [重复] 的相关文章

随机推荐

  • 为 UIBarButtonItem 设置图像 - 图像拉伸

    当我尝试使用 UIBarButtonItem 的 initWithImage 来初始化导航栏自定义图像时 它会被冲破并拉伸到黑色导航栏上 这就是我创建它的方式 UIBarButtonItem button UIBarButtonItem a
  • 警告:为 foreach() 提供的参数无效

    results mysql query select from classpics foreach results as uno echo td valign middle align center a class neutral href
  • Linux中使用的offsetof

    我正在研究如何在给定结构中找到特定变量的偏移量 我尝试了以下程序 struct info char a int b char c int d struct info myinfo int main int argc char argv st
  • 缓存URL内容

    我有一个非常简单的用例 当远程端的内容发生变化时 例如 当 上次修改 发生变化时 通过正确和自动重新加载来缓存 URL 的内容 我怎样才能在Java中做到这一点 注意 我的类路径上有 spring guava 和 commons lang3
  • 从 ABC 和 django.db.models.Model 继承会引发元类异常

    我正在尝试使用Python 3实现一个Django数据模型类 它也是一个接口类 我这样做的原因是 我正在为我的同事编写一个基类 并且需要他全部实现三个方法他从我的课程中派生出来的 我试图为他提供一种简化的方式来使用我设计的系统的功能 但是
  • 如何让Python Yaml库以人性化的方式保存?

    这是我得到的 Python 代码 d ToGoFirst aaa Second bbb Pagargaph Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eius
  • 每次抽奖都重画不变的背景?

    这可能是一个非常简单的问题 但我搜索后发现没有其他方法可以做到这一点 每次绘制时都重新绘制背景是没有意义的 有没有办法画一些东西并将它们留在屏幕上 我试图注释掉 GraphicsDevice Clear Color CornflowerBl
  • 从另一个应用程序窗口获取焦点控件的句柄

    我有一个应用程序有一些控件 按钮 编辑等 的窗口 我需要模拟用户事件 如 Tab 单击和输入文本 我在用着keybd event在 Tab 键顺序控件 编辑框 之间移动焦点并为其输入文本 但我需要知道当前焦点控件的句柄 例如从中获取文本或更
  • 使用 ASP.NET Web API 并行进行基本身份验证和表单身份验证

    免责声明 首先我要说的是 我是 MVC4 Web Api 一般 Web 服务 JQuery 的新手 我可能从错误的角度攻击这个问题 我正在尝试用 C 为 NET 4 构建一个 Web MVC 应用程序 Web API 以部署在 Azure
  • async_resolve 中的 boost::asio::ip::tcp::resolver::iterator 的生命周期是多少?

    当我打电话时boost asio ip tcp resolver async resolve 我的处理程序收到一个ip tcp resolver iterator迭代一个或多个ip tcp resolver entries 他们的寿命是多少
  • 位列的唯一约束仅允许 1 个真 (1) 值

    我有这张表 CREATE TABLE tblExample ExampleID int IDENTITY 1 1 NOT NULL WordsAndStuff nvarchar max NOT NULL Active bit NOT NUL
  • 如何使 Django sessionId cookie 安全

    这是我目前的sessionIdcookie属性 设置 Cookie sessionid 3jdpjxgepk49vrnhbabdvju3r80ci581 过期 2018 年 8 月 6 日星期一 12 40 14 GMT 仅 Http 最大
  • 通过显示文本查找带有selenium的元素

    我试图将鼠标悬停在带有硒的菜单栏中的元素上 但很难找到该元素 该元素显示如下 div class mainItem TextToFind div 这种类型有多个元素 因此我需要通过以下方式找到该元素TextToFind 我试过了 drive
  • Bootstrap 4:带有徽标和 2 行的导航栏

    我正在尝试使用 Bootstrap 4 创建一个符合下面原理图的网站标题 我用来实现此目的的代码如下 省略了无关代码 div class navbar div class container yellow div class row div
  • 尝试将 Braintree-Web 集成到 Angular2 中

    我正在尝试在我的 Angular2 应用程序中使用 Braintree SDK braintree web 我真的很感激任何有关如何使其发挥作用的指示 我认为这是因为我没有导入 Braintree web 模块 但我也不知道如何导入 我可以
  • 如何删除 HTML 中字符之间的空格?填充不起作用

    即使我将填充添加为 0px 为什么字母 之前有空格 以红色标记 span style margin 0 padding 0 border 1px solid blue font size 48px span That space is pa
  • 这段代码会删除文件扩展名吗?

    这不是我的代码 我想弄清楚这到底是做什么的 这是一个用 C 语言编写的大型古老系统的一部分 实际上它是 4 年前编写的 但很可能是由 80 年代末程序员心态编写的 部分代码 char DestFile 256 char DestFile2
  • Python3 SMTP ValueError:server_hostname 不能为空字符串或以前导点开头

    import smtplib smtp smtplib SMTP smtp connect smtp gmail com 587 220 b smtp gmail com ESMTP h15 v6sm187291iog 48 gsmtp s
  • @IdClass 使用 JPA 和 Hibernate 生成“实例的标识符已更改”

    对于使用不区分大小写的数据库架构的 JPA 实体模型 当我使用 IdClass 注释时 我始终会收到 实例的标识符已更改 异常 对于具有 字符串 主键的对象 当数据库中存在一种大小写的字符串并且使用仅大小写不同的相同字符串执行查询时 会发生
  • Jquery live() 与 delegate() [重复]

    这个问题在这里已经有答案了 我在这里和网上其他地方读过一些关于两者之间差异的帖子live and delegate 但是我还没有找到我正在寻找的答案 如果这是一个骗局 请告诉我 我知道之间的区别live and delegate就是它liv