jquery 规范
使用单引号
不推荐
$("div").html("<img src='1.jpg'>");
推荐
$('div').html('<img src="1.jpg">');
缓存变量
DOM 遍历是昂贵的,所以尽量将会重用的元素缓存。
不推荐
var h = $('#element').height();
$('#element').css('height', h - 20);
推荐
var $element = $('#element'),
h = $element.height();
$element.css('height', h - 20);
避免全局变量
jquery 与 javascript 一样,一般来说,最好确保你的变量在函数作用域内。
不推荐
$element = $('#element');
h = $element.height();
$element.css('height',h - 20);
推荐
var $element = $('#element'),
h = $element.height();
$element.css('height',h - 20);
使用驼峰式命名
使用驼峰式命名,在前面添加 $
作为前缀,以便于标示为 jquery 对象。
不推荐
var first = $('#first'),
second = $('#second'),
value = $first.val();
推荐
var $first = $('#first'),
$second = $('#second'),
value = $first.val();
使用单 var 模式
将多条 var
语句合并为一条语句,建议将未赋值的变量放到后面。

var $first = $('#first'),
$second = $('#second'),
value = $first.val(),
k = 3,
cookiestring = 'SOMECOOKIESPLEASE',
i,
j,
myArray = {};

使用 on 来处理事件
在新版 jquery 中,更短的 on('click')
用来取代类似 click()
这样的函数。在之前的版本中 on()
就是 bind()
。自从 jquery 1.7 版本后,on()
是附加事件处理程序的首选方法。出于一致性考虑,你可以简单的全部使用 on()
方法。
不推荐

$first.click(function(){
$first.css('border', '1px solid red');
$first.css('color', 'blue');
});
$first.hover(function(){
$first.css('border', '1px solid red');
});

推荐

$first.on('click', function(){
$first.css('border', '1px solid red');
$first.css('color', 'blue');
});
$first.on('hover', function(){
$first.css('border', '1px solid red');
});

精简 jquery
一般来说,最好尽可能合并属性。
不推荐
$first.click(function(){
$first.css('border', '1px solid red');
$first.css('color', 'blue');
});
推荐

$first.on('click', function(){
$first.css({
'border':'1px solid red',
'color':'blue'
});
});

链式操作
jquery 能够很轻易的实现链式操作。
不推荐

$second.html(value);
$second.on('click', function(){
alert('hello everybody');
});
$second.fadeIn('slow');
$second.animate({height: '120px'}, 500);

推荐
$second.html(value).on('click', function(){
alert('hello everybody');
}).fadeIn('slow').animate({height: '120px'}, 500);
维持代码的可读性
伴随着精简代码和使用链式的同时,可能带来代码的难以阅读。添加缩进和换行能起到很好的效果。
不推荐
$second.html(value).on('click', function(){
alert('hello everybody');
}).fadeIn('slow').animate({height: '120px'}, 500);
推荐

$second.html(value)
.on('click', function() {
alert('hello everybody');
})
.fadeIn('slow')
.animate({
height: '120px'
}, 500);

选择短路求值
短路求值是一个从左到右求值的表达式,用 &&
或 ||
操作符。
不推荐
function initVar($myVar) {
if (!$myVar) {
$myVar = $('#selector');
}
}
推荐
function initVar($myVar) {
$myVar = $myVar || $('#selector');
}
避免通用选择符
不推荐
$('.container > *');
推荐
$('.container').children();
缓存父元素
正如前面所提到的,DOM 遍历是一项昂贵的操作。典型做法是缓存父元素并在选择子元素时重用这些缓存元素。
不推荐
var $container = $('#container'),
$containerLi = $('#container li'),
$containerLiSpan = $('#container li span');
推荐
var $container = $('#container '),
$containerLi = $container.find('li'),
$containerLiSpan= $containerLi.find('span');
避免隐式通用选择符
通用选择符有时是隐式的,不容易发现。
不推荐
$(':button');
推荐
$('input:button');
优化选择符
例如,id 选择符应该是唯一的,所以没有必要添加额外的选择符。
不推荐
$('div#myid');
$('div#footer a.myLink');
推荐
$('#myid');
$('#footer .myLink');
避免多个 id 选择符
在此强调,id 选择符应该是唯一的,不需要添加额外的选择符,更不需要多个后代 id 选择符。
不推荐
$('#outer #inner');
推荐
$('#inner');
熟记技巧
你可能对使用 jquery 中的方法缺少经验,一定要多查看文档,可能会有一个更好或更快的方法来使用它。
不推荐
$('#id').data(key, value);
推荐
$.data('#id', key, value);
坚持最新版本
新版本通常更好:更轻量级,更高效。当然你需要考虑你要支持的代码的兼容性。例如,2.0 版本不支持 ie 6/7/8。
摒弃弃用方法
关注每个新版本的废弃方法是非常重要的并尽量避免使用这些方法。
不推荐
$('#stuff').live('click', function() {
console.log('hooray');
});
推荐
$('#stuff').on('click', function() {
console.log('hooray');
});
利用 CDN
CDN 能保证选择离用户最近的缓存并迅速响应。(推荐 jquery 官网提供的 CDN)。
必要时组合 jquery 和 javascript 原生代码
如上所述,jquery 就是 javascript,这意味着用 jquery 能做的事情,同样可以用原生代码来做。原生代码的可读性和可维护性可能不如 jquery,而且代码更长。但也意味着更高效(通常更接近底层代码可读性越差,性能越高)。牢记没有任何框架能比原生代码更小,更轻,更高效。
jquery 规范的更多相关文章
- 【规范】前端编码规范——jquery 规范
使用单引号 不推荐 $("div").html("<img src='1.jpg'>"); 推荐 $('div').html('<img sr ...
- JQuery笔记:JQuery和JavaScript的联系与区别
来源:http://www.ido321.com/1019.html ps:LZ觉得这个标题有点大了,超出了能力范围,不喜勿碰.目前只记录LZ能力范围内的,日后持续补充. 一.JQuery对象和DOM ...
- 二.jQuery源码解析之构建jQuery之构建函数jQuery的7种用法
一:$(selectorStr[,限制范围]),接受一个选择器(符合jQuery规范的字符串),返回一个jQuery对象; 二:$(htmlStr[,文档对象]),$(html[,json对象])传入 ...
- data属性
本框架内置组件以及部分插件可以通过data属性来初始化并使用,通常通过data-toggle来调用API(toggle是触发器的意思,例如我们创建一个navtab标签可以通过为a的data-toggl ...
- Sublime Text 3常用插件安装(持续更新)
首先声明一下,小编是做后台开发出身,但是总是想捣鼓一些小的网站出来,可能是完美心作祟,感觉前端这边不能差事,所以就自己上了,一开始是用eclipse来开发的,具体原因忘了,也不知道怎么就开始用Subl ...
- Sublime Text 3安装及常用插件安装
一.Sublime3下载 1.百度搜索Sublime3 download,选择进入下载页面 2.我选择下载Win64位安装程序 二.Sublime3安装 傻瓜式安装,一直点下一步即可. 三.Subli ...
- Sublime3插件安装
首先声明一下,小编是做后台开发出身,但是总是想捣鼓一些小的网站出来,可能是完美心作祟,感觉前端这边不能差事,所以就自己上了,一开始是用eclipse来开发的,具体原因忘了,也不知道怎么就开始用Subl ...
- sublime Text3的使用
sublime text百度百科: Sublime Text 是一个代码编辑器,也是HTML和散文先进的文本编辑器.Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python ...
- Sublime Text3安装及常用插件安装
为了使用强大好用的代码编辑器来进行selenium3+Python3的自动化测试. 使用Sublime Text 3非常适合. 1.下载安装 首先到http://www.sublimetext.com ...
随机推荐
- SpringCloud之客户端连接Eureka集群
客户端分别yml: ###服务启动端口号 server: port: 8002 ###服务名称(服务注册到eureka名称) spring: application: name: app-toov5- ...
- 剑指offer之 二叉搜索树的后续遍历序列
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. public class Solution { ...
- DL二(稀疏自编码器 Sparse Autoencoder)
稀疏自编码器 Sparse Autoencoder 一神经网络(Neural Networks) 1.1 基本术语 神经网络(neural networks) 激活函数(activation func ...
- scala基本学习
def addOne(f: Int => Int, arg: Int) = f(arg) + 1,意思是 addOne要两个参数一个是:传一个整数的参数且返回一个整形的方法的参数,第二个参数就是 ...
- Codeforces Round #335 (Div. 2) C. Sorting Railway Cars
C. Sorting Railway Cars time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- Subnet Pools and Address Scopes
Why is IPAM important for Neutron? •No VM connectivity without a valid IP assigned •Duplicate subne ...
- numpy.ndarray类型的数组元素输出时,保留小数点后4位
因为计算结果数组中每个值都是很长的一串小数,看起来比较乱,想格式化一下输出方式. 这是个看起来很简单的问题,但是方法找了很久. 方法也是看起来很简单,用 numpy.set_printoptions( ...
- codeforces914G Sum the Fibonacci
题目大意:给定一个长为$n$($n\leq 10^6$)的序列S,定义一个合法的五元组$(a,b,c,d,e)$合法当且仅当 $$ ( S_a \mid S_b ) and S_c and ( S_d ...
- 2017-2018-1 20179203 《Linux内核原理与分析》第八周作业
攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/US ...
- 「LOJ#10050」「一本通 2.3 例 2」The XOR Largest Pair (Trie
题目描述 在给定的 $N$ 个整数 $A_1,A_2,A_3...A_n$ 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数$N$. 第二行$N$个整数$A_i$. 输出格式 ...