尽量使用最新版本的jQuery类库

发布时间:2026/8/30 14:33:50

尽量使用最新版本的jQuery类库
Query项目中使用了大量的创新。最好的方法来提高性能就是使用最新版本的jQuery。每一个新的版本都包含了优化的bug修复。对我们来说唯一要干的就是修改tag何乐而不为呢我们也可以使用免费的CDN服务例如 Google来存放jQuery类库。!-- Include a specific version of jQuery -- script srchttp://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js/script !-- Include the latest version in the 1.6 branch -- script srchttp://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js/script2. 使用简单的选择器直 到最近返回DOM元素的方式都是解析选择器字符串javascript循环和内建的javascript API例如getElementbyId()getElementsByTagName()getElementsByClassName()三种 方式的整合使用。但是现代浏览器都开始支持querySelectorAll()这个方法能够理解CSS查询器而且能带来显著的性能提升。然而我们应该避免使用复杂的选择器返回元素。更不用说很多用户使用老版本的浏览器强迫jQuery去处理DOM树。这个方式非常慢。$(li[data-selectedtrue] a) // Fancy, but slow $(li.selected a) // Better $(#elem) // Best选择id是最快速的方式。如果你需要使用class名称 那么你最好带上tag名称这样会更快些。特别是在老浏览器和移动设备上。访问DOM是javascript应用最慢的方式 因此尽量少使用。使用变量去保存选择器这样会使用cache来保存。性能更好。var buttons $(#navigation a.button); // Some prefer prefixing their jQuery variables with $: var $buttons $(#navigation a.button);另 外一个值得做的是jQuery给了你很多的额外便利选择器 例如:visible:hidden:animated还有其它这些不是合法的CSS3选择器。结果是你使用这些类库就不能有效地利用 querySelectorAll()方法。为了弥补这个问题你需要先选择元素再过滤如下$(a.button:animated); // Does not use querySelectorAll() $(a.button).filter(:animated); // Uses it3. 数组方式使用jQuery对象运行选择器的结果是一个jQuery对象。然而jQuery类库让你感觉你正在使用一个定义了index和长度的数组。// Selecting all the navigation buttons: var buttons $(#navigation a.button); // We can loop though the collection: for(var i0;ibuttons.length;i){ console.log(buttons[i]); // A DOM element, not a jQuery object } // We can even slice it: var firstFour buttons.slice(0,4);如果性能是你关注的那么使用简单for或者while循环来处理而不是$.each()这样能使你的代码更快。检查长度也是一个检查你的collection是否含有元素的方式。if(buttons){ // This is always true // Do something } if(buttons.length){ // True only if buttons contains elements // Do something }4. 选择器属性jQuery提供了一个属性这个属性显示了用来做链式的选择器。$(#container li:first-child).selector // #container li:first-child $(#container li).filter(:first-child).selector // #container li.filter(:first-child)虽然上面的例子针对同样的元素选择器则完全不一样。第二个实际上是非法的你不可以使用它来创建一个对象。只能用来显示filter方法是用来缩小collection。5. 创建一个空的jQuery对象创建一个新的jQuery空间能极大的减小开销。有时候你可能需要创建一个空的对象然后使用add()方法添加对象。var container $([]); container.add(another_element);这也是quickEach方法的基础你可以使用这种更快的方式而非each()。6. 选择一个随机元素上面我提到过jQuery添加它自己的选择器过滤。除了类库你可以添加自己的过滤器。只需要添加一个新的方法到$.expr[:]对象。一个非常棒的使用方式是Waldek Mastykarz的博客中提到的创建一个用来返回随机元素的选择器。你可以修改下面代码(function($){ var random 0; $.expr[:].random function(a, i, m, r) { if (i 0) { random Math.floor(Math.random() * r.length); } return i random; }; })(jQuery); // This is how you use it: $(li:random).addClass(glow);7. 使用CSS HooksCSS hooks API是提供开发人员得到和设置特定的CSS数值的方法。使用它你可以隐藏浏览器特定的执行并且使用一个统一的界面来存取特定的属性。、$.cssHooks[borderRadius] { get: function(elem, computed, extra){ // Depending on the browser, read the value of // -moz-border-radius, -webkit-border-radius or border-radius }, set: function(elem, value){ // Set the appropriate CSS3 property } }; // Use it without worrying which property the browser actually understands: $(#rect).css(borderRadius,5);更好的在于人们已经创建了一个支持CSS hooks类库8. 使用自定义的删除方法你可能听到过jQuery的删除插件它能够允许你给你的动画添加特效。唯一的缺点是你的访问者需要加载另外一个javascript文件。幸运的是你可以简单的从插件拷贝效果并且添加到jQuery.easing对象中如下$.easing.easeInOutQuad function (x, t, b, c, d) { if ((t/d/2) 1) return c/2*t*t b; return -c/2 * ((--t)*(t-2) - 1) b; }; // To use it: $(#elem).animate({width:200},slow,easeInOutQuad);9. $.proxy()使用callback方法的缺点之一是当执行类库中的方法后context被设置到另外一个元素例如div idpanel styledisplay:none buttonClose/button /div执行下面代码$(#panel).fadeIn(function(){ // this points to #panel $(#panel button).click(function(){ // this points to the button $(this).fadeOut(); }); });你将遇到问题button会消失不是panel。使用$.proxy方法你可以这样书写代码$(#panel).fadeIn(function(){ // Using $.proxy to bind this: $(#panel button).click($.proxy(function(){ // this points to #panel $(this).fadeOut(); },this)); });这样才正确的执行。$.proxy方法接受两个参数你最初的方法还有context。这里$.proxy in the docs.。10. 判断页面是否太过复杂一个非常简单的道理约复杂的页面加载的速度越慢。你可以使用下面代码检查一下你的页面内容console.log( $(*).length );以上代码返回的数值越小网页加载速度越快。你可以考虑通过删除无用多余的元素来优化你的代码11. 将你的代码转化成jQuery插件如果你要花一定得时间去开发一段jQuery代码那么你可以考虑将代码变成插件。这将能够帮助你重用代码并且能够有效的帮助你组织代码。创建一个插件代码如下(function($){ $.fn.yourPluginName function(){ // Your code goes here return this; }; })(jQuery);你可以在这里开发教程。12. 设置全局AJAX为缺省如果你开发ajax程序的话你肯定需要有”加载中“之类的显示告知用户ajax正在进行我们可以使用如下代码统一管理如下// ajaxSetup is useful for setting general defaults: $.ajaxSetup({ url : /ajax/, dataType : json }); $.ajaxStart(function(){ showIndicator(); disableButtons(); }); $.ajaxComplete(function(){ hideIndicator(); enableButtons(); }); /* // Additional methods you can use: $.ajaxStop(); $.ajaxError(); $.ajaxSuccess(); $.ajaxSend(); */详细你可以查看这篇文章:如何快速创建一个AJAX的加载的图片效果5个在线Ajax“加载中”旋转图标生成器工具13. 在动画中使用delay()方法链式的动画效果是jQuery的强大之处。但是有一个忽略了的细节就是你可以在动画之间加上delays如下// This is wrong: $(#elem).animate({width:200},function(){ setTimeout(function(){ $(#elem).animate({marginTop:100}); },2000); }); // Do it like this: $(#elem).animate({width:200}).delay(2000).animate({marginTop:100});jQuery动画帮了我们大忙否则我们得自己处理一堆的细节设置timtout处理属性值跟踪动画变化等等。大家可以参考这个文章jQuery animations14. 合理利用HTML5的Data属性HTML5的data属性可以帮助我们插入数据。特别合适前后端的数据交换。jQuery近来发布的data()方法可以有效的利用HTML5的属性来自动得到数据。下面是个例子div idd1 data-rolepage data-last-value43 data-hiddentrue data-options{name:John} /div为了存取数据你需要调用如下代码$(#d1).data(role); // page $(#d1).data(lastValue); // 43 $(#d1).data(hidden); // true; $(#d1).data(options).name; // John;

相关新闻

Kubernetes Secret 管理:能挂载不代表安全

Kubernetes Secret 管理:能挂载不代表安全

2026/8/26 16:08:59

Kubernetes Secret 管理:能挂载不代表安全 一、Secret 不是天然安全 Kubernetes Secret 很常用,数据库密码、API Token、证书都可能放在里面。但名字叫 Secret,不代表它天然安全。默认情况下,Secret 只是做了编码存储,…

俄罗斯已成立打击网络诈骗工作组,由一位副总理领导

俄罗斯已成立打击网络诈骗工作组,由一位副总理领导

2026/8/24 15:13:48

克里姆林宫的“反诈闪电战”:俄罗斯副总理挂帅,正式向网络犯罪宣战在过去几年里,电信诈骗和网络犯罪在全球范围内呈野蛮生长之势。在俄罗斯,这一问题同样愈演愈烈,甚至已经从单纯的治安问题,上升到了危害国…

高精度温度测控系统PCB设计实战:从布局规划到信号完整性保障

高精度温度测控系统PCB设计实战:从布局规划到信号完整性保障

2026/8/25 8:27:49

1. 高精度温度测控系统的PCB设计挑战在工业级高精度温度测控系统中,PCB设计直接决定了最终产品的测量精度和稳定性。与普通数字电路不同,这类系统需要处理微伏级别的PT100差分信号,同时还要应对工业环境中的电磁干扰。我在设计这类系统时&…

Joplin笔记应用:5平台一键同步,数据彻底握在自己手里

Joplin笔记应用:5平台一键同步,数据彻底握在自己手里

2026/8/30 14:32:00

Joplin笔记应用:5平台一键同步,数据彻底握在自己手里 【免费下载链接】joplin Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS. 项目地址: https://gitcode.com/GitHub_Trending/j…

Win11Debloat 安装教程:一键清理 Windows 11 预装应用与遥测

Win11Debloat 安装教程:一键清理 Windows 11 预装应用与遥测

2026/8/30 14:32:00

Win11Debloat 安装教程:一键清理 Windows 11 预装应用与遥测 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter …

LLM生成反例的验证:从原理到沙箱执行

LLM生成反例的验证:从原理到沙箱执行

2026/8/30 14:32:00

在LLM应用开发中,有一类问题看起来不严重,实际影响却很大:模型会生成一条超出你专业范围的反例,而你几乎无法在第一时间判断它是否成立。它可能来自一个代码审查结论,可能来自一次技术方案评估,也可能来自R…

Expo 推送通知完整教程:从权限到真机第一条通知

Expo 推送通知完整教程:从权限到真机第一条通知

2026/8/30 14:32:00

Expo 推送通知完整教程:从权限到真机第一条通知 【免费下载链接】expo An open-source framework for making universal native apps with React. Expo runs on Android, iOS, and the web. 项目地址: https://gitcode.com/GitHub_Trending/ex/expo 用户装了…

Adapter+持续学习:恶意流量识别少样本增量更新的新思路

Adapter+持续学习:恶意流量识别少样本增量更新的新思路

2026/8/30 14:32:00

打开你的安全运营后台,昨天刚上线的新攻击检测模型,今天收到告警:某个老威胁家族的检出率从 93% 掉到了 71%。你以为是特征没对齐,排查了半天发现,问题出在“模型更新”本身。这不是运维失误,而是深度学习模…

Remotion 模板市场完整指南:发现、选择并使用社区视频模板

Remotion 模板市场完整指南:发现、选择并使用社区视频模板

2026/8/30 14:22:00

Remotion 模板市场完整指南:发现、选择并使用社区视频模板 【免费下载链接】remotion 🎥 Make videos programmatically with React 项目地址: https://gitcode.com/GitHub_Trending/re/remotion Remotion 是一款基于 React 的可编程视频创建工具…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/30 0:01:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/30 0:01:07

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/30 0:01:07

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…