jQuery 全局事件和性能?

2023-12-20

我正在寻找一种使用 jQuery 显示状态指示器的方法,我在 jQuery Cookbook 中找到了一个解决方案,它显示了这个解决方案

(function($) {
    $(document).ready(function() {
       $('#ajaxStatus')
         .ajaxStart(function() {
            $(this).show();
        })
         .ajaxStop(function() {
            $(this).hide();
        });

        .....
  })(jQuery);

然后它警告说,

如果您在应用程序中遇到性能问题,可能是因为 如果存在很大的事件传播成本 元素数量。在这种情况下,将 global 设置为 false 可能会给你 性能改进。

那么首先我应该使用上面显示的解决方案吗?随着我的网站和 js 代码变得越来越大,这会成为性能问题吗?

我应该避免 jQuery 全局事件,只是像段落中所说的那样将其关闭吗?

最后,在执行 ajax 请求时,你们如何显示一个简单的指示器?


老实说,我认为这种谨慎是valid,但同时也已经过时了。在这里查看 jQuery 源代码:http://github.com/jquery/jquery/blob/master/src/event.js#L290 http://github.com/jquery/jquery/blob/master/src/event.js#L290

它显示了全球事件是如何发生的now处理:

if ( jQuery.event.global[ type ] ) {
  jQuery.each( jQuery.cache, function() {
    if ( this.events && this.events[type] ) {
      jQuery.event.trigger( event, data, this.handle.elem );
    }
  });
}

It used to be:

jQuery("*").add([window, document]).trigger(type, data);

所以它不会触发every像以前一样的元素,这使得大量元素警告成为一个非常现实的问题,它而是循环遍历已注册的元素或事件,并且仅当any已经注册了,所以是much现在性能更好了。


对于您的问题:

那么首先我应该使用上面显示的解决方案吗?随着我的网站和 js 代码变得越来越大,这会成为性能问题吗?

是的,上面的解决方案很好,在我上面概述的全局事件优化之后,我还没有看到足够大的页面来解决这个问题。

我应该避免 jQuery 全局事件,只是像段落中所说的那样将其关闭吗?

不,你几乎可以忽略该段落之后使用的任何 jQuery这个变化 http://github.com/jquery/jquery/commit/cf78e396db1b986360c32fb0ca071a0fb90da064被制作了。

最后,在执行 ajax 请求时,你们如何显示一个简单的指示器?

正如您在问题中所说的那样:)

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

jQuery 全局事件和性能? 的相关文章

  • 将 JSON 发布到 Python CGI

    我已经安装了 Apache2 并且 Python 可以工作 但我有一个问题 我有两页 一个是 Python 页面 另一个是带有 JQuery 的 Html 页面 有人可以告诉我如何让我的 ajax 帖子正常工作吗
  • Swift 使用哪种通用排序算法?它在排序数据上表现不佳

    我一直在挑选和探索 Swift 标准库sort 其函数为Array类型 令我惊讶的是 我注意到它在已经排序的数据上表现不佳 对数组进行排序Int打乱顺序似乎比对已经排序的同一个数组进行排序快 5 倍 对已打乱顺序的对象数组进行排序比对已按排
  • 发送 POST 请求时 JSON 原语无效

    我有以下 ajax 请求 其中我尝试将 JSON 对象发送到服务器 function sendData subscriptionJson ajax type POST url Url Action SubscribeSecurities S
  • 为什么 Collections.counter 这么慢?

    我正在尝试解决罗莎琳德的基本问题 即计算给定序列中的核苷酸 并在列表中返回结果 对于那些不熟悉生物信息学的人来说 它只是计算字符串中 4 个不同字符 A C G T 出现的次数 我期望collections Counter是最快的方法 首先
  • jQuery:单击外部元素以“关闭”使用toggleClass 出现的菜单

    我已经构建了一些导航 针对移动网络 它使用 jQuery 中的toggleClass 方法来隐藏和显示菜单 单击 MENU 图标 按钮可在菜单 div 上打开和关闭类 active 显示 隐藏 我一直在拼命寻找一种通过单击菜单外部 页面上的
  • jQuery Find() 和 XML 在 IE 中不起作用

    我正在尝试使用 jQuery 来解析内存中的 XML 文档 除了 IE 之外 这在所有东西上都很有效 令人震惊 一些谷歌搜索显示 问题很可能是由于 IE 将我的文档视为 HTML 而不是 XML MIME 类型 有没有办法让我的 jQuer
  • Javascript 播放声音性能重吗?

    我正在用 Javascript 制作一个简单的游戏 当一个物体与墙壁碰撞时 它会发出 砰 的声音 声音的响度取决于物体的速度 速度越高 gt 声音越大 播放功能 playSound function id vol ID of the sou
  • 处理大数据二进制文件

    我正在处理包含原始数据的大型二进制文件 每个大约 2 GB 这些文件具有明确定义的结构 其中每个文件都是一个数组events 每个事件都是一个数组data banks Each event and data bank有一个结构 header
  • 在画布上绘制多个矩形

    我试图在鼠标移动时在画布上添加多个矩形 但是当我在图像上绘制矩形时 画布上的背面图像也会被清除 我不想删除它 我想要画布上有多个矩形而不清除画布图像 请检查下面的 JavaScript 代码 var canvas document getE
  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • C++ Exp 与 Log:哪个更快?

    我有一个 C 应用程序 需要比较两个值并决定哪个值更大 唯一的复杂之处是一个数字在对数空间中表示 而另一个则不是 例如 double log num 1 log 1 23 double num 2 1 24 如果我想比较num 1 and
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • React Native:加载图像后应用程序性能不佳

    加载图像似乎没有问题 但是加载完毕后就出现问题了 在我的应用程序中 我在整个游戏中一张一张地加载卡片图像 一旦我加载了 40 张卡片图像 整个应用程序就会变得很慢 它总是发生在第 40 个图像处 当我在第 40 个图像之后继续加载更多卡片图
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • JQuery 验证在 IE8 中不起作用

    我使用 JQuery 验证脚本来验证 HTML 表单 这在 Firefox 中完美运行 但在 IE8 中不起作用 我认为冒号 或分号 有问题 但我无法抓住它 jQuery validator addMethod selectNone fun
  • 如何在jquery中获取保存时间和当前时间的差异?

    我想在 javascript 或 jquery 中获取保存时间和当前时间之间的时差 我节省的时间看起来像Sun Oct 24 15 55 56 GMT 05 30 2010 java中的日期格式代码如下 String newDate 201
  • :jQuery / Sizzle 中的 nth-of-type()?

    让我惊讶的是Sizzle http sizzlejs com jQuery 使用的选择器引擎 带有一个内置的 nth child 选择器 但缺少 nth of type 选择器 为了说明之间的区别 nth child and nth of
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch

随机推荐

  • 更改 Eclipse 3.5 中的用户代理以安装新软件

    如何在 Eclipse 3 5 中更改用户代理 我尝试添加属性 Dhttp agent 我的用户代理到 eclipse ini 文件 但使用 WireShark 我可以看到用户代理仍然雅加达 Commons HttpClient 3 1 我
  • 将 Scala Stream 转换为新 Stream,它是当前元素与前一个元素的总和

    如何转换整数的 Scala Stream 以便我们拥有一个新的 Stream 其中元素是该元素与前一个元素的总和 例如 如果输入流是 1 2 3 4 则输出流是 1 3 5 7 还有第二个问题 如何使总和使用输出流中的前一个 以便输出为 1
  • Python 多处理应用程序陷入 docker 容器中

    我正在尝试运行一个多处理 Python 应用程序来加速和并行我的任务 我的应用程序使用简单的多处理Pool并在资源有限的 docker 容器中运行 我注意到我的应用程序有时会卡住 它永远不会结束 终止 但没有任何移动 任务停止运行 没有日志
  • JSON解析swift,数组在NSURLSession之外没有值

    我正在尝试使用以下代码快速调用 json webservice 并将其显示在tableview在快速的IOS中 declared as global var IdDEc String string array declared global
  • TinyMCE UTF-8 保存到 MySQL 数据库

    我将 TinyMCE 输入发送到 POST 一个 php 文件 然后将其保存在 MySQL 数据库中 输入具有 UTF 8 土耳其字符 所以当我输入时T rk e在 TinyMCE 输入中并将其发送到 post PHP 后端收到此字符串 p
  • 枚举是否应该具有未初始化的值。

    我们正在争论枚举是否应该具有未初始化的值 例如 我们有 public enum TimeOfDayType Morning Afternoon Evening or public enum TimeOfDayType None Mornin
  • Logstash 文件输入插件

    目前 我正在使用文件输入插件来检查我的日志存档 但文件输入插件对我来说不是正确的解决方案 因为文件输入插件本质上期望该文件是事件流而不是静态文件 现在 这给我带来了很大的问题 因为我的日志存档有 100 000 多个日志文件 而我的 Log
  • 查找访问令牌的过期时间

    有什么方法可以使用图形 api 来查明页面访问令牌或应用程序令牌何时过期 Update 有一个新的 API 端点用于访问有关访问令牌的信息 您可以在这里找到信息 调试访问令牌和处理错误 https developers facebook c
  • 为什么 JavaScript 中带小数的最大位数只有 16

    不久前我在测试一些 HTML 表单时遇到了这个问题 JavaScript 中带小数点的数字的最大位数仅为 16 我尝试过以下方法 var x 12345678912345 6789 x 是 12345678912345 68 仅 16 位数
  • 使用 Conditional 属性标记仅返回任务的异步方法?

    The System Diagnostics ConditionalAttribute对于分割调试代码片段而不需要使用编译器指令确实很有用 但它只与返回的方法兼容void 有没有办法将它 或等效的东西 用于返回 a 的异步方法Task No
  • 请求取消不会传播到云运行容器

    当发送到云运行服务的 HTTP 请求被发起服务取消时 取消 关闭的连接不会传播到云运行容器内正在服务的请求 示例代码 package main import log net http os time func main port os Ge
  • bash:mkvirtualenv:找不到命令

    按照以下说明进行操作后道格 海尔曼的virtualenvwrapper post https doughellmann com posts virtualenvwrapper 我仍然无法启动测试环境 mpenning tsunami mkv
  • COM 互操作传递错误的指针,只有一个字节的数据

    我在使用 COM 将指针传递给本机代码时遇到问题 我想在托管 C 代码中构建一个字节数组 并将该数组传递给本机 C 代码 我正在处理托管代码方面 我的同事负责本机方面 请注意 我在托管方面更强大 并且我几乎一直在使用所写的 COM 对象 C
  • 如果已选择,则单击时取消选择 GridView.Item

    我知道这看起来很简单 我也是这么想的 但实际上并非如此 我有一个 GridView SelectionMode Single 我想通过单击来简单地取消选择选定的项目 问题是 当您选择已选择的项目时 SelectionChanged 不会触发
  • 分钟变化时不调用 TIME_TICK

    我面临的问题是 当时间更改时 TIME TICK 仅在应用程序运行时调用 但我希望即使应用程序正在运行或不使用广播接收器也能调用它 主要活动 public class MainActivity extends Activity Overri
  • 如何在一个命令中执行多个 lein 任务?

    我是莱宁根的新手 当我尝试执行以下操作时 lein clean jar I got Wrong number of arguments to clean task Expected 如何在一个命令中执行多个任务 是的 可以执行多个莱宁根通过
  • Delphi Xe2 VCL 样式和网页浏览器

    Win7 x64 Delphi Xe2 更新2 Prompt 新项目编译为x32 在项目选项中应用视觉 vcl 样式 默认选择一种 在表单上的button1和WebBrowser1 在按钮中我们编写WebBrowser1 Navigate
  • 点击事件在 Chrome 中不起作用,但当我们从控制台手动执行它时,事件会触发

    从几个小时开始 我就试图找到一个棘手的客户问题的根本原因 感谢帮助 客户端 Chrome 浏览器中没有任何点击事件被触发 但是当我们从控制台调用 JavaScript 方法时 它就会触发 在附图中 您可以看到我如何触发该事件 尝试删除 da
  • 具有多个变量的 Sass @each

    我刚刚开始使用 Sass 和 Compass 我很喜欢它 我想做的就是利用 each简化重复性任务的功能 然而 我只看到过这样的例子 each插入一个变量 并且我希望能够使用多个变量 标准方式 从Sass 参考 http sass lang
  • jQuery 全局事件和性能?

    我正在寻找一种使用 jQuery 显示状态指示器的方法 我在 jQuery Cookbook 中找到了一个解决方案 它显示了这个解决方案 function document ready function ajaxStatus ajaxSta