jQuery 开发者应该注意的9个错误


Posted in Javascript onMay 03, 2012

jQuery is so easy to use that sometimes we just forget that it's not CSS. While using CSS, we don't have to give much thought to performance, because it's so fast that it's not worth the effort to optimize it. But when it comes to the real world, jQuery can drive developers crazy with performance issues. Sometimes you lose precious milliseconds without even noticing it. Also, it's so easy to forget about some functions and we keep using the old (and not-so-good) ones.

Let's take a look at a few of the most-common-and-easiest-to-fix mistakes while using jQuery in your projects.

1. You aren't using the latest jQuery version
Each version update means higher performance and several bug fixes. The current stable release is 1.7.2, and I'm pretty sure you know about plenty of sites developed using 1.6 and below. Ok, ok, you can't just update every old site for every jQuery update (unless your client is paying you to do so) but you should at least start using it for your new projects. So, forget about this local copy and just grab the latest release every time you start a new project.

2. You aren't using a CDN-hosted copy of jQuery
How many unique visitors you`ve got last month? I bet the number is still under 1 billion, right?
So you'd better use Google's copy of jQuery instead of yours. If your user still has the cached file of Google's website (or from many other sites that uses its CDN) his browser will just get the cached version, improving a lot your website's performance. You can use it by copying & pasting this HTML:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

3. You aren't using a fallback for CDN version
I know I said Google is awesome and stuff, but they can fail. So, every time you rely upon external sources, make sure you have a local fallback. I've seen this snippet in the HTML5 boilerplate source code and just found it amazing. You should use it too:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.2.min.js"><\/script>')</script>

4. You aren't chaining stuff
While doing common operations, you don't need to call the element every time you want to manipulate it. If you're doing several manipulations in a row, use chaining, so jQuery won't need to get the element twice.

Instead of this:

$(“#mydiv”).hide();
$(“#mydiv”).css(“padding-left”, “50px”);

Use this:

$(“#mydiv”).hide().css(“padding-left”, “50px”);

5. You aren't caching stuff
This is one of the most important performance tips. If you'll call an element at least twice, you should cache it. Caching is just saving the jQuery selector in a variable, so when you need to call it again you'll just reference the variable and jQuery won't need to search the whole DOM tree again to find your element.

/* you can use it this way because almost every jQuery function returns
the element, so $mydiv will be equal to $(“#mydiv”); also it's good to
use the $mydiv so you know it's a jQuery caching var */

var $mydiv = $(“#mydiv”).hide();
[.. lot of cool stuff going on here …]
$mydiv.show();

6. You aren't using pure js
Specially for attributes modification, we have several built in methods to get stuff done with pure javascript. You can even “convert” jQuery objects back to DOM nodes to use them with simpler methods, like this:

$mydiv[0].setAttribute('class', 'awesome'); //you can convert jQuery objects to DOM nodes using $jqObj[0]

7. You aren't checking plugins before including in your site
You know, jQuery is not the hardest thing in the world to code. But good JS (and jQuery), that is pretty hard. The bad news is that while you aren't a good programmer, you'll have to rely on trial and error to find out what is good and what isn't. A few points you must be aware of while including a plugin in your project:

File Size (the easiest to check!) ? if a tooltip plugin is bigger than jQuery source, something is really wrong;
Performance ? You can try it with firebug and others. They give you easy to understand charts to you'll know when something is out of place;
Cross-browsing ? Test, at least on IE7, but Chrome, Firefox, Safari and Opera are good ones to try also
Mobile ? Don't forget that everything is getting mobile. See if the plugin works, or at least doesn't crash your mobile browser
8. You aren't open to remove jQuery
Sometimes it's just better to remove it and use simple ol' CSS. Actually if you want, for instance, an opacity hover, or transition can be done with CSS along with good browser support. And there's no way jQuery can beat plain CSS.

9. You are using jQuery for server side tasks
I know that masking and validating are good, but don't rely just on jQuery for those. You need to recheck everything on the server side. That is especially important if you are thinking about using AJAX. Also, make sure everything will work with JS disabled.

So, it's your turn!

Do you have anything you think should be on this list? Share your thoughts!

About the Author

Javascript 相关文章推荐
JavaScript 乱码问题
Aug 06 Javascript
不同浏览器对回车提交表单的处理办法
Feb 13 Javascript
js 实现打印网页中定义的部分内容的代码
Apr 01 Javascript
JS实现的省份级联实例代码
Jun 24 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
Dec 27 Javascript
JavaScript定时器和优化的取消定时器方法
Jul 03 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
Aug 15 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
Feb 13 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
Jan 22 jQuery
详解webpack的proxyTable无效的解决方案
Jun 15 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
Nov 01 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
May 31 Javascript
jQuery Ajax请求状态管理器打包
May 03 #Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
May 03 #Javascript
Firefox中beforeunload事件的实现缺陷浅析
May 03 #Javascript
统计jQuery中各字符串出现次数的工具
May 03 #Javascript
JQuery插件Style定制化方法的分析与比较
May 03 #Javascript
拉动滚动条加载数据的jquery代码
May 03 #Javascript
基于jquery的固定表头和列头的代码
May 03 #Javascript
You might like
十天学会php(2)
2006/10/09 PHP
php代码优化及php相关问题总结
2006/10/09 PHP
php 获取可变函数参数的函数
2009/08/26 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
Python标准库与第三方库详解
2014/07/22 Python
Python and、or以及and-or语法总结
2015/04/14 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
pytorch 修改预训练model实例
2020/01/18 Python
PyQt5实现画布小程序
2020/05/30 Python
Python通过format函数格式化显示值
2020/10/17 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
程序员岗位职责
2013/11/11 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
安阳殷墟导游词
2015/02/10 职场文书
同学聚会通知短信
2015/04/20 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis