【问题标题】:Is the jquery 'on' function efficient when selector is documentIs the jquery 'on' function efficient when selector is document
【发布时间】:2013-10-31 23:04:31
【问题描述】:

使用有什么问题吗 Jquery 的 .on() 函数如下:

$(document).on("click", "#myDynamicallyLoadedElement", function() {});

对比类似:

$(".parentElement").on("click", "#myDynamicallyLoadedElement", function() {});

我觉得 $(document) 的使用效率会低得多,并且可能会导致浏览器出现性能或其他问题。

有谁知道以这种方式使用 $(document).on() 是否有任何问题?

【问题讨论】:

标签: jquery performance


【解决方案1】:

您希望尽可能缩小范围,但在添加事件侦听器时避免重复自己。现在,$(document) 在您实际上想要定位整个文档时没有任何问题,但如果不是,那么您可能会受到 jQuery 必须过滤的数百个事件的影响——这有点低效。相反,最好只针对您想要收听的元素。为了在该示例中获得最佳性能,请执行以下操作:

$("#myDynamicallyLoadedElement").click(function () {});

由于您使用了 ID,我假设文档中只有一个 myDynamicallyLoadedElement。

click() 是 on("click", ) 的简写

【讨论】:

    【解决方案2】:

    使用$(document).on 的两个主要原因是如果您不知道您的内容将在哪里,或者如果您在加载其他html 之前定义事件处理程序。在大多数情况下,这两个陈述都不正确,因此您应该在遵守 D.R.Y 原则的同时尝试尽可能具体。

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 1970-01-01
      • 2021-01-02
      • 2017-06-23
      • 2020-11-11
      • 2022-12-02
      • 2022-12-27
      • 2012-06-07
      • 1970-01-01
      相关资源
      最近更新 更多