$(sel).bind("click", $(sel).click(, $(sel).live("click", $(sel).on("click") 之间有什么显着差异?

2024-04-29

我已经使用它们很长一段时间了,但大多数时候,我更喜欢较短的,但是,我只想真正深入了解本质细节。我可能一直在创建有缺陷的代码,并且我不想在网络上贡献和传播懒惰完成的代码。

所以告诉我:

它们之间有哪些显着的优点/缺点,或者是 就像冰淇淋一样,不同口味但同样“爽口”的效果?

鼓励每个人就此事发表专家意见。

提前谢谢了。


bind()在1.0中添加,live()在1.3中,delegate()在 1.4.2 和on() in 1.7.

自 1.7 起on()是首选用途并且live()已被弃用并且根本不推荐。 如果您使用的是 1.3 使用bind()代替live()从 1.4.2 开始使用delegate()代替live()从 1.7 开始使用on()而不是其他任何一个。

关于$("selector").click。取自click() 文档 http://api.jquery.com/click/:

在前两个变体中,此方法是 .bind("click", handler),以及 .on("click", handler) 截至 jQuery 1.7。在第三种变体中,当 .click() 被调用时没有 参数,它是 .trigger("click") 的快捷方式。

为什么使用 on() 而不是其他的?
on()是最新添加的内容,在 1.7 版中加入 jQuery 库。on()有多个方法签名,使其能够提供与先前版本相同的结果,但经过改进和优化。引用自文档 http://api.jquery.com/on/:

从 jQuery 1.7 开始,.on() 方法提供了所需的所有功能 用于附加事件处理程序。

基本没有必要使用bind() or delegate()不再了。当然它会起作用,并且使用这些方法应该没有什么坏处,但我总是假设最新的添加内容针对以前版本的任何缺点进行了优化和改进(除非文档另有说明,就像在情况下一样)live()).
基于此我建议使用on()反而。

原因live()不推荐完全停止更多的是因为它的缺点。引用自live() 文档 http://api.jquery.com/live.

以后不再推荐使用 .live() 方法 jQuery 版本提供了更好的方法,而它没有 缺点。特别是在使用过程中会出现以下问题: 。居住():

  • jQuery 尝试检索选择器指定的元素 在调用 .live() 方法之前,这可能会很耗时 大文档。
  • 不支持链接方法。例如, $("a").find(".offsite, .external").live( ... );无效并且确实 不按预期工作。
  • 由于所有 .live() 事件都附加在文档元素上,因此事件 在处理它们之前,采取尽可能最长和最慢的路径。
  • On mobile iOS (iPhone, iPad and iPod Touch) the click event does not bubble to the document body for most elements and cannot be used with .live() without applying one of the following workarounds:
    1. 使用本机可点击元素,例如 或 按钮,因为这两者 做气泡记录。
    2. 使用 .on() 或 .delegate() 附加到 document.body 级别以下的元素, 因为移动iOS确实在体内冒泡。
    3. 将CSS样式cursor:pointer应用到需要冒泡的元素上 点击次数(或包含 document.documentElement 的父级)。但请注意, 这将禁用元素上的复制\粘贴并使其成为 触摸时突出显示。
  • 在事件处理程序中调用 event.stopPropagation() 是无效的 停止附加在文档下方的事件处理程序;该活动有 已经传播到文档。
  • .live() 方法与其他事件方法交互的方式可以 令人惊讶的是,例如 $(document).unbind("click") 删除所有点击 任何调用 .live() 都会附加处理程序!

不过,文档中还有更多好东西。

其他资源
click() http://api.jquery.com/click/
bind() http://api.jquery.com/bind
live()(不要使用) http://api.jquery.com/live
代表() http://api.jquery.com/delegate/
on() http://api.jquery.com/on/

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

$(sel).bind("click", $(sel).click(, $(sel).live("click", $(sel).on("click") 之间有什么显着差异? 的相关文章

随机推荐

  • Firefox 中有 XDomainRequest 等效项吗?

    Firefox 或任何其他浏览器中是否有与 Internet Explorer 的 XDomainRequest 等效的功能 我想访问我的域之外的服务 网站 Internet Explorer 8 中的 XDomainRequest 对象是
  • 下拉菜单的 iframe z-index

    我有下拉菜单的代码 我的目标是通过 iFrame 加载该代码 不幸的是 我无法弄清楚如何使用 Z 索引加载 iFrame 外部的视图元素 代码如下
  • 如何在 PHP 中从serializeArray 获取 POST 值?

    我正在尝试这个我见过的新方法serializeArray with ajax var data form input serializeArray post var action process data data ajax etc 这样我
  • 如何在 VS 2012 中获取水晶报表?

    我对 VS 2012 有疑问 即我想创建一个报告 例如特定学生的结果 我搜索了很多然后我知道我必须安装SAP Crystal Report 并且我已经这样做了 但工具箱中仍然没有水晶报表 只有两个项目 名为 报表 报表向导 有人可以帮我弄这
  • Action Cables、嵌套 JSON 属性和 JSONAPI

    我有一个相当具体的问题 我希望你们中的一个真正聪明的人可能知道解决方案 甚至是现阶段的解决方法 具体来说 我正在处理操作电缆 嵌套 JSON 和 JSONAPI 我有一个asset模型 它具有一些属性 例如name desc等等 但它还有一
  • 覆盖 Kotlin 数据类的 getter

    给定以下 Kotlin 类 data class Test val value Int 我将如何覆盖Intgetter 以便如果值为负数则返回 0 如果这是不可能的 有哪些技术可以达到合适的结果 在花了几乎一整年的时间每天编写 Kotlin
  • Typescript 上的 Drawflow 库

    我目前正在尝试实现 Jerosoler 制作的很棒的 Drawflow 库 在这里找到 https github com jerosoler Drawflow https github com jerosoler Drawflow 在我的
  • 在 UIButton 中垂直显示标题?

    我是 iPhone 编程新手 我被这个简单的问题困扰了 我有一个UIView with a UIButton在里面 维度为UIButton40x200 靠近左边距 我需要在按钮中垂直显示文本 有没有一种方法可以在不使用任何图像的情况下完成此
  • php 的睡眠函数

    作为使用 cron 作业的可能替代方案 我找到了 sleep 函数 我以前从未使用过这个 如果我告诉我的脚本在一种循环内运行 并且在该循环内我有这样的指令 sleeps for 86400 seconds or one day sleep
  • oracle中的数字格式

    Hai 我的数字格式有问题 我正在使用 oracle 我在数据库中有一个数字字段 但是当我检索它时 我需要将其视为浮点数 例如 在检索时 现在我得到的结果为 200 DR 借方的 DR 手动给出 现在我需要得到 200 00 DR 的结果
  • Python 3:资源警告:未关闭的文件 <_io.TextIOWrapper name='PATH_OF_FILE'

    当我在 python 中运行测试用例时 python 规范化器 setup py 测试 我收到以下异常 ResourceWarning unclosed file lt io TextIOWrapper name Users workspa
  • 在我分叉了 github 项目后,如何才能保持原始项目的最新状态?

    在 github 上 在我分叉一个项目 修改它 然后提交我的拉取请求后 似乎我必须删除并重新分叉 以便在我的拉取请求得到尊重后保持最新状态 必须不断删除存储库才能使其保持最新状态 这似乎很乏味 有没有什么方法可以使其保持最新状态而无需删除和
  • Typescript 中此子范围的问题

    This is ALMOST和其他人一样this到目前为止 我已经读过范围界定问题 除了一个细微的差别之外 这使得提出这个问题变得有意义 imo 现在最初我的问题是范围this使用 Knockout 和 Typescript 因此给出以下内
  • 将接口作为参数传递给扩展方法

    我使用扩展方法来扩展 html 助手来制作 RSS 转发器 public static string RSSRepeater this HtmlHelper html IEnumerable
  • 角度 $q.all() 是否有第二次成功,如 jQuery $.get()

    查看 jQuery 文档 我发现了以下内容 get example php function alert success done function alert second success lt fail function alert e
  • FLTK 1.4 小部件位置 w.r.t. X11 根窗口?

    context 我正在和其他人一起编码参考系统 http refpersys org C 17 上的 GPLv3 项目gitlab https gitlab com bstarynk refpersys适用于 GNU Linux x86 6
  • 如何使用各个属性中的所有验证属性序列化模型?

    上下文 使用 mvc 控制器方法创建 jsonP 服务 该服务提供表单字段的定义 包括所有验证规则 我的问题是我不知道如何序列化验证属性 我更喜欢验证属性的格式与在常规 Mvc 视图中使用不显眼的验证时由 Razor 序列化的格式相同 为了
  • 更改 WCF 中的命名空间和 schemaLocation 属性

    我用 C 开发了一个 WCF 服务 我们的客户已经有一个用 Java 编写的客户端软件 他们说当他们尝试添加我们的 wcf 服务引用时 他们收到错误 他们认为问题在于命名空间 我对 WCF 中的命名空间或任何其他标记详细信息了解不多 他们说
  • Android - Google+ 共享状态失败

    我查看了 Google 关于如何将 Android 应用程序的状态共享到 Google 的说明 https developers google com mobile android share https developers google
  • $(sel).bind("click", $(sel).click(, $(sel).live("click", $(sel).on("click") 之间有什么显着差异?

    我已经使用它们很长一段时间了 但大多数时候 我更喜欢较短的 但是 我只想真正深入了解本质细节 我可能一直在创建有缺陷的代码 并且我不想在网络上贡献和传播懒惰完成的代码 所以告诉我 它们之间有哪些显着的优点 缺点 或者是 就像冰淇淋一样 不同