jquery 规范

简介: 使用单引号不推荐$("div").html("");推荐$('div').html('');缓存变量DOM 遍历是昂贵的,所以尽量将会重用的元素缓存。不推荐var h = $('#element').

使用单引号

不推荐

$("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,而且代码更长。但也意味着更高效(通常更接近底层代码可读性越差,性能越高)。牢记没有任何框架能比原生代码更小,更轻,更高效。

目录
相关文章
|
5天前
|
JavaScript 前端开发 API
jQuery的基本认识和作用
jQuery的基本认识和作用
|
7月前
|
JavaScript 前端开发 CDN
jQuery补充
jQuery补充
208 0
|
4月前
|
XML 缓存 JavaScript
jQuery 第十章(jQuery AJAX以及jQuery和其他框架兼容)
jQuery 第十章(jQuery AJAX以及jQuery和其他框架兼容)
26 0
|
6月前
|
JavaScript 前端开发
前端基础 -JQuery之 相关效果
前端基础 -JQuery之 相关效果
19 0
|
JavaScript
JQuery - 基础篇
JQuery - 基础篇
86 0
JQuery - 基础篇
|
JavaScript 前端开发
认识JQuery和获取jQuery库并引入
认识JQuery和获取jQuery库并引入
238 0
认识JQuery和获取jQuery库并引入
|
JavaScript 前端开发 Java
前端基础六之jQuery效果
前端基础六之jQuery效果
101 0
前端基础六之jQuery效果
|
Web App开发 JavaScript 前端开发
jQuery 表单验证扩展(一)
好长一段时间没有写js代码了,也好长时间没有写文章了。今天刚申请一个2M 的电信宽带,下午闲来无事写了一个 基于jQuery的表单验证插件。首先申明这个插件问题比较多,不过觉得这个东西很有必要。后期持续跟新中,先把自己写的插件原型拿出来晒晒! 再次申明,插件问题比较多,后期一个个来解决,请不要恶言相向。
916 0
|
前端开发 JavaScript
jQuery 表单验证扩展(五)
大概在一个月之前,自己尝试着写一个jQuery的表单验证插件,当初的目的并不是为了让这个插件流行起来,只是为了自己学习的需要。由于工作的问题,这个问题一直处于停留的状态。前些天报名参加了那个什么博客大赛,最近未写一篇博客,当然本文也不是了参加什么博客大赛而写,只是作为自己学习的积累。
1206 0
|
前端开发 JavaScript 索引
jQuery系列 第四章 jQuery框架的选择器
第四章 jQuery框架的选择器 4.1 jQuery选择器说明 jQuery 最核心的组成部分就是选择器引擎。它完全继承了 CSS 的风格,可以对 DOM 元 素的标签名、属性名、状态等进行快速准确的选 择,而且不必担心浏览器的兼容性,写法更加简洁。
956 0