使用单引号

不推荐

$("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 规范的更多相关文章

  1. 【规范】前端编码规范——jquery 规范

    使用单引号 不推荐 $("div").html("<img src='1.jpg'>"); 推荐 $('div').html('<img sr ...

  2. JQuery笔记:JQuery和JavaScript的联系与区别

    来源:http://www.ido321.com/1019.html ps:LZ觉得这个标题有点大了,超出了能力范围,不喜勿碰.目前只记录LZ能力范围内的,日后持续补充. 一.JQuery对象和DOM ...

  3. 二.jQuery源码解析之构建jQuery之构建函数jQuery的7种用法

    一:$(selectorStr[,限制范围]),接受一个选择器(符合jQuery规范的字符串),返回一个jQuery对象; 二:$(htmlStr[,文档对象]),$(html[,json对象])传入 ...

  4. data属性

    本框架内置组件以及部分插件可以通过data属性来初始化并使用,通常通过data-toggle来调用API(toggle是触发器的意思,例如我们创建一个navtab标签可以通过为a的data-toggl ...

  5. Sublime Text 3常用插件安装(持续更新)

    首先声明一下,小编是做后台开发出身,但是总是想捣鼓一些小的网站出来,可能是完美心作祟,感觉前端这边不能差事,所以就自己上了,一开始是用eclipse来开发的,具体原因忘了,也不知道怎么就开始用Subl ...

  6. Sublime Text 3安装及常用插件安装

    一.Sublime3下载 1.百度搜索Sublime3 download,选择进入下载页面 2.我选择下载Win64位安装程序 二.Sublime3安装 傻瓜式安装,一直点下一步即可. 三.Subli ...

  7. Sublime3插件安装

    首先声明一下,小编是做后台开发出身,但是总是想捣鼓一些小的网站出来,可能是完美心作祟,感觉前端这边不能差事,所以就自己上了,一开始是用eclipse来开发的,具体原因忘了,也不知道怎么就开始用Subl ...

  8. sublime Text3的使用

    sublime text百度百科: Sublime Text 是一个代码编辑器,也是HTML和散文先进的文本编辑器.Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python ...

  9. Sublime Text3安装及常用插件安装

    为了使用强大好用的代码编辑器来进行selenium3+Python3的自动化测试. 使用Sublime Text 3非常适合. 1.下载安装 首先到http://www.sublimetext.com ...

随机推荐

  1. 光流法跟踪fast角点思路

    光流法需要include<opencv2/video/tracking.hpp>,用到列表,所以要include<list><vector>1.读取文件定义图像存储 ...

  2. Logstash添加Protobuf解析插件

    logstash收集日志时,日志部分是由google的protobuf工具打印的,直接利用json解析会造成部分无法解析的问题 搜索后发现有个logstash的protobuf插件 在logstash ...

  3. 手撸IoC

    Ioc的实现 可以把IoC模式看作是工厂模式的升华,可以把IoC看作一个大工厂,只不过这个大工厂里要生成的对象都是XML文件中给出定义的,然后利用Java的反射变成,根据XML中给出的类名生成相应的对 ...

  4. JFreeChart的使用示例

    示例一,饼图,简单示例: 导入jar,代码文件: 运行结果: 代码: import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartF ...

  5. TMS Scripter importtool的使用

    uses ap_DateUtils; showmessage(dayof(now)); //注册delphi对象或变量 : IDEScripter1   IDEScripter1.AddConstan ...

  6. java入门了解07

    1.集合: 1.1相比数组的优势: a.可以存储任意类型的对象数据,数组只能存储一种类型的变量 b.集合的长度会发生变化,数组不会 1.2集合概述 ----|Collection: 单列集合 ---- ...

  7. MFC使用简单总结(便于以后查阅)

    一.资源 共有三个和资源有关的文件:资源头文件resource.h.资源描述文件resource.rc和存放在res文件夹下的具体的资源如图片等. 资源头文件中全部是宏定义,应用程序需要为每个资源都定 ...

  8. PL/SQL Developer 的 SQL 编辑窗口显示行号

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一直奇怪为什么 PL/SQL 6 系列的版本可以显示行号,为什么到了 7 .8 版本之后反而还不行了?而且我都已经设置了“显示行号”的呀. 如图: ...

  9. 基于Protobuf的分布式高性能RPC框架——Navi-Pbrpc

    基于Protobuf的分布式高性能RPC框架——Navi-Pbrpc 二月 8, 2016 1 简介 Navi-pbrpc框架是一个高性能的远程调用RPC框架,使用netty4技术提供非阻塞.异步.全 ...

  10. 如何在node.js中使用neo4j

    本章中你将会学到如何在node.js中使用neo4j图形数据库. 当你想存储或者查询和数据紧密关联的数据的时候,图形数据库很有用. neo4j是一个可有效存储,处理和查询你数据模型中紧密相连的元素的数 ...