Jquery高级编程(二)【性能优化篇】

jQuery性能优化高级技巧 综上所述,通过选择合适的选择器、缓存jQuery对象、使用原生JavaScript方法、批量操作元素和使用事件委托等高级技巧,可以优化jQuery的性能,提高页面的响应速度和用户体验。在实际开发中,根据具体的场景和需求,选择合适的优化策略,并结合代码的实际情况进行性能测试和优化调整,以达到最佳的性能优化效果。事件委托将事件处理程序绑定到父元素上,当子元素触发事件时,事件将通过事件冒泡机制传递到父元素,然后由父元素的事件处理程序进行处理。通过一次选择多个元素,可以减少DOM操作的次数,提高性能。 阅读详情

通过CDN(Content Delivery Network)引入jQuery库

要提升网站中javascript的性能的最简单的一步就是引入最新版本的jQuery库,新发布的版本通常在性能上会有更好的提升而且也修复了一下bug。或者通过CDN引入也是很好的选择,通过CDN引入能够减少网站的加载时间。以下是一些CDN服务:

<!-- Case 1 - jQuery CDN -->
<script src="http://code.jquery.com/jquery-1.10.2.min.js" ></script>
<!-- Case 2 - requesting jQuery from Googles CDN (notice the protocol) -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
<!-- Case 3 - requesting the latest minor 1.10.x version (only cached for an hour) -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10/jquery.min.js" ></script>
<!-- Case 4 - requesting the absolute latest jQuery version (use with caution) -->
<script src="http://code.jquery.com/jquery.min.js" ></script>

一些国内的CDN服务:

http://www.bootcdn.cn/jquery/

<!--新浪 CDN-->
<script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>

<!--百度 CDN-->
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>

<!--Bootstrap CDN-->
http://www.bootcdn.cn/jquery/

减少DOM操作

虽然javascript性能上有了很大的提升,但是DOM操作还是很耗费资源的,需要减少对DOM操作。当在一个页面中插入大量的元素的时候,尤其重要。例如:

<div id="elem" ></div>
// 不好的方式
//var elem = $('#elem');
//for(var i = 0; i < 100; i++){
// elem.append('<li>element '+i+'</li>');
//}

// 好的方式
var elem = $('#elem' ),
arr = [];
for(var i = 0;  i < 100;  i++){
arr. push('<li>element ' +i+'</li>' );
}
elem. append(arr. join('' ));

将所有的元素缓存起来一次插入性能上会有所提升,因为只触发页面一次重绘。对于CSS样式属性也是同样的道理。

适当使用原生JS

创建jQuery对象会带来一些开销。所以,如果比较注重性能的话,尽可能使用原生的javascript。在某些方面可能会更容易理解和写更少的代码。例如:

// 打印list中的li的id
$('#colors li' ). each(function(){
//将$(this).attr('id')方法替换为直接通过ID属性访问
console. log(this. id);
})

选择器优化

如果你需要更好的性能,但是仍然要用到jQuery,你可以在jQuery选择器优化做一些尝试。以下是一个测试程序,通过浏览器的控制台console.time 和console.timeEnd 方法来记录不同选择器执行时间。
HTML:

<div id="peanutButter" >
<div id="jelly" class=".jellyTime" ></div>
</div>

JS:

//测试程序
var iterations = 10000,
    i;

//--------------------------------------------
//Case 1: 很慢
console.time('Fancy');
for (i = 0; i < iterations; i++) {

    $('#peanutButter div:first');
}
console.timeEnd('Fancy');

//--------------------------------------------
//Case 2: 比较好,但仍然很慢
console.time('Parent-child');
for (i = 0; i < iterations; i++) {

    $('#peanutButter div');
}
console.timeEnd('Parent-child');

//--------------------------------------------
//Case 3: 一些浏览器会比较快
console.time('Parent-child by class');
for (i = 0; i < iterations; i++) {
    // 通过后代Class选择器
    $('#peanutButter .jellyTime');
}
console.timeEnd('Parent-child by class');

//--------------------------------------------
//Case 4: 更好的方式 
console.time('By class name');
21
for (i = 0; i < iterations; i++) {
    // 直接通过Class选择器
    $('.jellyTime');
}
console.timeEnd('By class name');

//--------------------------------------------
//Case 5: 推荐的方式 ID选择器
console.time('By id');
for (i = 0; i < iterations; i++) {

    $('#jelly');
}
console.timeEnd('By id');

执行结果:
这里写图片描述

缓存jQuery对象

每次通过选择器构建一个新的jQuery对象时,jQuery的核心部分的Sizzle引擎会遍历DOM然后通过对应的选择器来匹配真正的dom元素。这种方式比较低效,在现代浏览器中可以通过document.querySelector方法通过传入对应的Class参数来匹配对应的元素,不过IE8以下版本不支持此方法。一个提高性能的实践是通过变量缓存jQuery对象。例如:

<ul id="pancakes" >
         <li>first</li>
         <li>second</li>
         <li>third</li>
         <li>fourth</li>
         <li>fifth</li>
</ul>

JS:

// 不好的方式:
// $('#pancakes li').eq(0).remove();
// $('#pancakes li').eq(1).remove();
// $('#pancakes li').eq(2).remove();
// ------------------------------------
// 推荐的方式:
var pancakes = $('#pancakes li');
pancakes.eq(0).remove();
pancakes.eq(1).remove();
pancakes.eq(2).remove();
// ------------------------------------
// 或者:
// pancakes.eq(0).remove().end()
//  .eq(1).remove().end()
//  .eq(2).remove().end();

定义一个可以复用的函数

直接上例子:
HTML:

<button id="menuButton" >Show Menu!</button>
<a href="#" id="menuLink" >Show Menu!</a>

JS:

//Bad: 
//这个会导致多个回调函数的副本占用内存
$('#menuButton, #menuLink' ). click(function(){
// ...
});

//----------------------------------------------
//Better
function showMenu(){
alert('Showing menu!' );
// Doing something complex here
}

$('#menuButton' ). click(showMenu);
$('#menuLink' ). click(showMenu);

如果定义一个内联(inline)回调函数同时这个包含多个元素的jQuery对象(正如上面所说的第一个例子),对于这个集合中的每个元素都会在内存中保存一个回调函数的副本。

用数组方式来遍历jQuery 对象集合

你或许没有注意到,但是在性能方面,对于jQuery each方法这种优雅实现是有代价的。有一个办法能够更快地遍历一个jQuery对象。就是通过数组来实现,jQuery对象集合就是一个类数组,具有length和value属性。可以通过程序来测试一下性能:
HTML:

<ul id="testList" >
   <li>Item</li>
   <li>Item</li>
   <li>Item</li>
   <li>Item</li> 
   <li>Item</li>
   <li>Item</li>
   <li>Item</li>
   <li>Item</li>
   <li>Item</li>
   <!-- add 50 more -->
</ul>

JS:

var arr = $('li'),
    iterations = 100000;
//------------------------------
// Array实现:    
console.time('Native Loop');
for (var z = 0; z < iterations; z++) {
    var length = arr.length;
    for (var i = 0; i < length; i++) {
        arr[i];
    }
}
console.timeEnd('Native Loop');

//------------------------------
// each实现:    
console.time('jQuery Each');
for (z = 0; z < iterations; z++) {
    arr.each(function(i, val) {
        this;
    });
}
console.timeEnd('jQuery Each');

结果:
这里写图片描述
可以看到通过数组实现方式遍历,执行效率更高。

5、硬件工程师笔试面试——上拉电阻、下拉电阻(2025版本) 本文系统介绍了上拉电阻和下拉电阻的原理与应用。上拉电阻通过连接电源确保电路高电平状态,常用于数字电路防抖、OC门驱动等场景;下拉电阻连接地线维持低电平,适用于低电平触发电路。文章详细分析了两种电阻的选择方法、功耗与响应速度的平衡策略,以及在高速信号传输中的影响差异。同时对比了二者的优缺点,并提供了模拟电路中的应用实例。最后给出了电阻值计算的工程方法,为硬件工程师的电路设计提供了实用参考。 阅读详情

相关推荐

Android SDK 国内镜像及配置方法(2025最新,包好使!)

android sdk 国内镜像配置方法,纯小白避坑指南,2025最新,亲测包好使!还有包奉上!

土豆是狗的博客 4671

jQuery高级技巧——性能优化篇

通过CDN(Content Delivery Network)引入jQuery库 要提升网站中javascript的性能的最简单的一步就是引入最新版本的jQuery库,新发布的版本通常在性能上会有更好的提升而且也修复了一下bug。或者通过CDN引入也是很好的选择,通过CDN引入能够减少网站的加载时间。以下是一些CDN服务: <!-- Case 1 - jQuery CDN -...

weixin_30455067的博客 227

systrace分析 之 问题初步定位

如下surfaceflinger空缺点,上面对应的bufferTX 中有buffer,但VSYNC-SF 过来后,SurfaceFlinger却没有去取,检查测试app “android.settings”, 也没有GPU completion 时间长的问题,所以该部分可以请SurfaceFlinger的owner 进一步确认为何不取buffer。. GPU拿的是acquireFence HWC拿的是releaseFence, GPU是绘图,HWC是合成显示,这两个是互相等待的关系,

yangzex的专栏 3191

jQuery笔记——工具函数——缓存

一、定义缓存 二、读取缓存 三、删除缓存

Deer_F的博客 498

UE5高斯泼溅落地全链路:从PLY导入到实时渲染的工程实践

3D高斯泼溅(3D Gaussian Splatting)正从NeRF后处理技术演进为新一代隐式几何渲染范式,其核心在于以可微椭球体替代传统三角面片,通过协方差矩阵与球谐系数实现高质量体素化渲染。该技术突破点云精度瓶颈,但与UE5现有资产管线存在根本性不兼容——静态网格导入器无法解析scale/rot/sh系数等非标顶点语义,标准光栅化管线亦无法执行高斯核采样计算。XV3DGS-UEPlugin通过自定义资产类型、StructuredBuffer GPU数据流与专用材质节点,将高斯泼溅重构为可编辑、可LOD

weixin_33692177的博客 356

亚马逊爬虫实战:中国商家信息(电话)爬取

import os), # 保存图片的路径# 搜索关键词"keywords":["毛巾","衣服"],"product_number": 1000000000000000, # 分页获取数量# 和url一一对应 个数要一样"remarks": ["备注1"],# 以下内容非专业人员请勿更改,请找开发人员更改. 对应的是amazon_product_url_setting文件中名称.},

youbingchen的博客 1522

优化ajax加载数据速度,使用JS,jQuery,ajax和&amp; json,我需要帮助优化页面加载速度...

我正在使用jQuery构建用户配置文件页面,从json类型数据库中提取。我在使用ajax填充页面时相当缺乏经验,所以现在,页面加载需要太长时间。如果我可以帮助改进我的代码,优化和加快页面加载,我真的很感激。目标:我正在尝试从为多个拥有多个数据点的用户构建的JSON数据库中获取信息。以下是JSON数据的示例。我希望在选择了标签后显示信息。每个配置文件中都有大量数据,特别是出版物。用户可以拥有任意数量...

weixin_28755331的博客 447

2026年紫光同创数字IC笔试试卷带答案

FPGA基础知识与设计要点摘要 本文围绕FPGA与数字IC设计核心概念,通过单选题、波形分析题、多选题和简答题形式,系统梳理了以下关键知识点: FPGA基础架构 查找表(LUT)是实现组合逻辑的基本单元(题1) CLB包含LUT、触发器和进位链,后者加速算术运算(题6,10) 布局布线优化是减少关键路径延迟的核心方法(题7) 时序分析要点 建立时间(时钟沿前数据需稳定)与保持时间(时钟沿后需保持)的定义(题2,简答1) 亚稳态成因及两级同步器处理跨时钟域信号的方法(多选题1,波形题5) 特殊设计技术 异步复

Open 114

优化jQuery性能的多种方法(整理总结)

为了获得更好的性能,你应该使用直接函数如. a j a x ( ) , 而 不 要 使 用 .ajax(),而不要使用.ajax(),而不要使用.get(),. g e t J S O N ( ) , .getJSON(),.getJSON(),.post(),因为后面的几个将会调用$.ajax()。当你的应用正式上线的时候,请从Google CDN载入jQuery,因为用户可以从最近的地方获取代码。所以你可以在jQuery代码有必要的时候也使用原生的Javascript函数,这样能获得更好的性能。

风清扬的专栏 961

从零开始做对容量规划:一文讲透 SAP Greenfield sizing 与 Quick Sizer 落地方法

摘要 SAP项目早期硬件规划面临业务细节缺失的挑战,Greenfield sizing方法通过Quick Sizer工具将业务需求转化为硬件资源需求。该方法聚焦主要负载驱动因素而非精确预测,采用标准化问卷形式输入并发用户数、业务处理量等参数,输出内存、CPU等资源需求。关键步骤包括选择正确的Quick Sizer版本、创建sizing项目、参考SAP基准测试和认证目录校准结果,最终将需求交由硬件厂商落地。该方法特别适用于缺乏历史数据的新系统部署,帮助在不确定性中建立可控的容量规划模型,避免资源浪费或性能不足

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 211

大模型——Ollama简明教程

在这篇文章中,我们将了解如何使用 Ollama、如何在 Ollama 中创建自己的模型 以及如何使用 Ollama 构建聊天机器人。这是深入研究 Ollama 的第一部分,以及我所学到的有关本地 LLM 的知识以及如何将它们用于基于推理的应用程序。在这篇文章中,你将了解——

1682

jQuery优化性能的十种方法

1,总是从ID选择器开始继承 例如: <div id="content"> <form method="post" action="#"> <h2>成绩</h2> <ul id="grades"> <li><input type="radio" class="good" name="gra...

weixin_30911809的博客 144

5.7 医疗 Agent 实战:构建一个懂“望闻问切”的智能医疗咨询助手

本文介绍了如何构建一个智能医疗咨询助手项目,通过LoRA微调和vLLM部署技术,将通用大模型改造为专业"AI皮肤科医生"。项目采用精简架构:Streamlit前端直接与vLLM推理服务通信,重点展示了微调模型在专业性、安全性和同理心方面的显著提升。实施步骤包括:部署微调模型、构建交互界面,并通过对比测试验证微调效果。项目强调AI仅作为咨询助手而非医生替代品,始终以引导用户寻求专业医疗帮助为核心目标,体现了负责任AI应用的关键原则。

yonggeit的博客 2959

jQuery 进阶之后的高级用法

从 jQuery 项目的源码中,你可以创建一个自定义的构建,只包含你需要的部分,从而减少最终文件的体积。

一拳莫敌的博客 490

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jQuery框架常用的性能优化

jQuery作为一个JavaScript非常优秀的库 是我们在学习前端过程中必学的 虽然它的流行程度已经没有那么巅峰了 但是学习了它对我们学习理解其他框架来说很有帮助 今天第一次写jQuery的相关文章,就先把这个性能问题拿出来 因为大家把时间都用在jQuery语法上了,对这个框架的性能优化不是很了解 下面我来给大家总结一下jQuery常用的性能优化 选择器的使用 jQuery

尐轩web前端网络日志 1871

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jQuery Smart Wizard与CSS动画集成:Animate.css高级用法

jQuery Smart Wizard是一款现代化且易用的jQuery步骤向导插件,它允许开发者轻松创建流畅的多步骤表单和流程。通过与Animate.css的集成,我们可以为向导添加引人注目的过渡效果,提升用户体验。本文将详细介绍如何将Animate.css的高级动画效果应用到jQuery Smart Wizard中,让你的步骤向导更加生动有趣。 ## 为什么选择Animate.css? An

gitblog_01174的博客 1090

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jQuery PowerTip高级技巧:自定义事件与API接口全攻略

jQuery PowerTip是一款功能强大的悬浮提示插件,能够帮助开发者轻松实现优雅的工具提示效果。本文将深入探讨其高级特性,包括自定义事件处理和API接口的全面应用,让你能够充分发挥这款插件的潜力,打造更加交互丰富的网页体验。 ## 深入理解PowerTip事件系统 PowerTip提供了丰富的事件机制,允许开发者在提示框生命周期的不同阶段执行自定义逻辑。通过监听这些事件,你可以实现从简单

gitblog_00055的博客 953

jQuery Cropper终极指南:从安装到高级配置的完整流程

你还在为图片裁剪功能的兼容性和复杂配置头疼吗?作为Web开发者,我们经常需要实现精确的图片裁剪功能,但市面上的解决方案要么过于简单功能不足,要么过于复杂难以整合。本文将带你全面掌握jQuery Cropper(图片裁剪插件)的所有核心技术,从基础安装到高级配置,再到企业级应用优化,让你1小时内从零构建专业的图片裁剪系统。 读完本文你将获得: - 3种快速安装方法(CDN/包管理/源码编译)的对比...

gitblog_00735的博客 807

jQuery性能优化的28个建议

我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些。找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来 一、选择器性能优化建议 1. 总是从#id选择器来继承 这是jQuery选择器的一条黄金法则。jQuery选择一个元素最快的方法就是用ID来选择了。 1 $('#content').hid

1万+

jQuery的性能优化

摘要: 我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些。找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来   我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些。找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来     ===========================

it_man的专栏 1700

jQuery QueryBuilder 高级查询构建器使用指南

jQuery QueryBuilder 是一个功能强大的jQuery插件,用于构建复杂的查询条件界面。它提供了一个直观的图形化界面,允许用户通过简单的点击和选择操作来构建复杂的查询逻辑,支持多种数据类型和操作符,并能将查询条件转换为多种格式(如JSON、SQL、MongoDB查询等)。 ## 核心功能特性 ### 1. 多语言支持 该插件内置了20多种语言支持,包括简体中文、英语、法语、德语等...

gitblog_00031的博客 595

jQuery的性能优化,你知道几条

我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些。找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来 ================================================================= 一、选择器性能优化建议 ==========================================

pjwan的专栏 4958

jQuery性能优化

大家都知道jQuery非常流行,是前端开发中重要的类库之一,也成为构建丰富web前端的利器。但是作为一个javascript类库,很多人并不是很清楚如何正确的使用jQuery来达到最佳的性能,特别是复杂的动画和web应用,它可能成为性能瓶顶。 我将在本篇文章中介绍我们在使用jQuery时,应该注意的一些性能问题,希望对大家开发高性能的web应用有所帮助。 使用最新版本的jQuery类库 JQuery每一个新的版本都会对上一个版本进行BUG修复和一些优化,同时也会包含一些创新,所以建议使用最新版本的jQuer

qf2019的博客 467
上一篇: Jquery高级编程(一)【50个高级jQuery代码开发技巧】
下一篇: Jquery高级编程(三)
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值