jQuery如今已经成为Web开发中最流行的JavaScript库,通过jQuery和大量的插件,你可以轻松实现各种绚丽的效果。

本文将为你介绍一些实用的技巧,希望可以帮助你更加高效地使用jQuery。

Tip 1:使用最新版本

jQuery每一个新版本都会包含一些性能优化和bug修复,为了便于升级,你可以使用Google CDN服务托管的jQuery库。有以下两种方式:

包含特定版本

  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

包含某个分支的的最新版本(此方法中jQuery版本的缓存期限只有1小时,不建议用于生产环境)

  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script>

Tip 2:使用简单的选择器

之前获取DOM元素通常使用jQuery的getElementById()、getElementsByTagName()和getElementsByClassName()方法。如今,所有主流浏览器都已经支持querySelectorAll(),该方法能够理解CSS查询器。你应该尝试使用这个更优的方式。

  1. $('li[data-selected="true"] a') // 看起来不错,但是慢
  2. $('li.selected a') // 更好的方法
  3. $('#ElementID) // 最好

Tip 3:缓存jQuery的结果

如果你没有别的选择,只能使用DOM选择器,那么你应该缓存jQuery的结果。例如:

  1. var selectedListItem = $('li[data-selected="true"]a')

现在,jQuery的结果已经被缓存到变量“selectedListItem”,该变量可以多次使用而不会影响性能。

Tip 4:使用jQuery扩展选择器的注意事项

jQuery提供了大量的扩展选择器,比如:visible、:hidden、:animated等,而它们不是有效的CSS3选择器。如果使用这些选择器,将不能再使用querySelectorAll()方法。为了避免这种情况,你可以先选择元素,然后再过滤。例如:

  1. $('a.button:hidden'); //则不能使用querySelectorAll()
  2. $('a.button').filter(':hidden'); //最佳方案

上述结果是相同的,但是第2个更快。

Tip 5:像数组一样使用jQuery对象

运行一个选择器得到的结果是一个jQuery对象。但是,通过jQuery可以使结果看起来更像一个数组,你可以定义索引元素和长度。

  1. var buttons = $('#navigation a.button'); //Selecting all the navigation b //Selecting all the navigation buttons
  2. // We can loop though the collection:
  3. for(var i=0;i<buttons.length;i++){
  4. console.log(buttons[i]); // A DOM element, not a jQuery object
  5. }

如果你想实现更高的性能,可以使用一个简单的循环(或while语句)来代替$.each(),这样速度会比之前快几倍。

Tip 6:检查一个元素是否存在

确定一个元素集合是否存在或是否包含元素的唯一方法是检查元素的长度。

  1. If (buttons.length){ // True only if buttons contains elements
  2. // Do something }

Tip 7:创建jQuery空对象

创建一个新的jQuery对象有时开销会比较大。不过你可以先创建一个空对象,然后通过add()填充它。

  1. var container = $([]);
  2. container.add(another_element);

Tip 8:统计Web页面中DOM元素数

如果页面中包含大量元素或内容,则浏览器渲染所需的时间也更多。你可以在控制台中执行以下语句,来统计页面中的DOM元素数:

  1. console.log($('*').length);

如果所得数值较小,则页面渲染较快。你可以通过删除多余的标记和不必要的元素来进行优化。

Tip 9:把你的代码变成jQuery插件

如果你希望将你的jQuery代码封装成一个jQuery插件,以便以后重用,你可以通过以下代码来创建:

  1. function($){
  2. $.fn.yourPluginName = function(){
  3. // Your code goes here
  4. return this;
  5. };
  6. })(jQuery);

Tip 10:本地存储

Local storage是一个用于在客户端上存储信息的API。使用时,你只需将你的数据作为localStorage全局对象的一个属性:

  1. localStorage.someData = "This data is going to persist across page refreshes and browser restarts";

旧的浏览器不支持该API,不过有各种jQuery插件可以作为替代方案。这些插件在localStorage不可用时提供了其他存储方案。下面是一个例子:

  1. // Check if "key" exists in the storage.
  2. var value = $.jStorage.get("key");
  3. if(!value){
  4. // if not - load the data from the server
  5. value = load_data_from_server();
  6. // and save it
  7. $.jStorage.set("key",value);

Tip 11: Live事件处理

为任何匹配选择器的元素设置一个事件处理程序,即使它在初始页面加载后被添加到DOM:

  1. $('button.yourClassName').live('click', yourFunctionName);

这样,通过ajax或javascript加载元素时,事件处理程序会自动为这些元素进行设置:

  1. $('button.yourClassName').die('click', yourFunctionName);

尽管与常规事件相比,live事件处理程序有一些局限性,但它还是适用于大部分情况。Live事件支持jQuery 1.3及以上版本。

Tip 12:克隆一个对象

使用.clone()方法克隆JavaScript中的DOM对象:

  1. // Clone the DIV
  2. var cloned = $('#yourdivID').clone();

.clone()方法无法克隆JavaScript对象。如果要克隆JavaScript对象,你可以使用下面的代码:

  1. // Shallow copy
  2. var newObject = jQuery.extend({}, oldObject);
  3. // Deep copy
  4. var newObject = jQuery.extend(true, {}, oldObject);

Tip 13:测试隐藏元素

通过.hide()和.show()方法可以改变元素的可见性。使用下面的代码可以检测元素是否可见:

  1. if($(element).is(":visible") == "true") {
  2. //The element is Visible
  3. }

Tip 14:找出最近的父DIV

如果你想找出某个元素的父级DIV(无论该DIV是否有ID),那么你可以使用这个jQuery选择器:

  1. $("#yourControl").closest("div");

英文原文:jQuery Best Practices

一些实用的 jQuery 技巧的更多相关文章

  1. 实用的jQuery技巧

    1.回到顶部按钮  利用jQuery里的animate和scrollTop方法,你便不需要使用插件创建简单的滚动到顶部动画. // Back to top $('.top').click(functi ...

  2. 25个实用的jQuery技巧和解决方案

    1. 去除页面的右键菜单 $(document).ready(function(){ $(document).bind(“contextmenu”,function(e){returnfalse;}) ...

  3. 25个实用的jquery技巧

    1. 去除页面的右键菜单   $(document).ready(function(){ $(document).bind(“contextmenu”,function(e){returnfalse; ...

  4. jquery技巧总结

    jquery技巧总结一.简介 1.1.概述随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype.YUI.jQuery.mootool ...

  5. 风云流水 jQuery技巧总结 (转)

    jQuery技巧总结 (转) 一.简介 1.1.概述 随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype.YUI.jQuery.m ...

  6. 2016年6月份那些最实用的 jQuery 插件专辑

    jQuery 是一个快速.流行的 JavaScript 库,jQuery 用于文档处理.事件处理.动画和 Ajax 交互非常简单,学习曲线也很平坦.2016年6月的 jQuery 插件专辑里,我们选择 ...

  7. bootstrap-简洁实用的jQuery手风琴插件

    前端 <html lang="zh"> <head> <meta charset="UTF-8"> <meta htt ...

  8. 一款很实用的jQuery鼠标悬浮有动画效果的响应式瀑布流插件

    一款很实用的jQuery鼠标悬浮有动画效果的响应式瀑布流插件 在线预览 下载地址 实例代码 <!doctype html> <html lang="zh"> ...

  9. 经验分享:10个简单实用的 jQuery 代码片段

    尽管各种 JavaScirpt 框架和库层出不穷,jQuery 仍然是 Web 前端开发中最常用的工具库.今天,向大家分享我觉得在网站开发中10个简单实用的 jQuery 代码片段. 您可能感兴趣的相 ...

随机推荐

  1. php中的占位符

    1.?这种形式传值,注意是数组! 2.:name的形式.

  2. C语言如何 实现 下雪效果

    题外话  前言 1.本文主要围绕 如何 在 控制台上 下起 一场 只有自己能看见的雪 2.是个简易跨平台的,主要是C语言 3.动画 采用 1s 40帧, 雪花具有 x轴速度和y轴速度 4.比较简单,可 ...

  3. 对 cloudwu 简单的 cstring 进行简单解析

    题外话 以前也用C写过字符串,主要应用的领域是,大字符串,文件读取方面.写的很粗暴,用的凑合着.那时候看见云风前辈的一个开源的 cstring 串. 当时简单观摩了一下,觉得挺好的.也没细看.过了较长 ...

  4. Split字符串分割函数

    非常非常常用的一个函数Split字符串分割函数. Dim myTest myTest = "aaa/bbb/ccc/ddd/eee/fff/ggg" Dim arrTest arr ...

  5. azure 云服务证书下载方式

    打开地址自动下载证书,vs中项目-右键-发布-导入证书. https://manage.windowsazure.cn/publishsettings/index 在 Visual Studio 中打 ...

  6. C++ json库jsoncpp 吐槽

    Explain 最近在做游戏接入SDK时用到C++的json库jsoncpp,jsoncpp 是一款优秀的json库,但恶心的一点是它采用Assert作为错误处理方法,而assert在linux下通过 ...

  7. iOS学习之C语言内存管理

         一.存储区划分      按照地址从高到低的顺序:栈区,堆区,静态区,常量区,代码区    1.栈区:局部变量的存储区域     局部变量基本都在函数.循环.分支中定义     栈区的内存空 ...

  8. Linux android开发环境问题:Unexcepted exception:cannot run program "android-sdk-linux/platfor-tools/adb" :err=2,No such file or directory.

    出现这个问题的原因: 我的linux是64位 ,而adb目前只有32位的,所以要安装运行32的环境. 不同的linux系统需要安装的不同: 我的Centos  解决方案如下 其他linux操作系统(参 ...

  9. 010--VS2013 C++ 平面地图贴图

    先准备好地图的小图片: //全局变量HDC mdc;HBITMAP fullmap;const int rows = 8, cols = 8; //-------------------------- ...

  10. git用法

    chapter: 8 add 添加文件内容至索引 用法:git add [选项] [--] ... -n, --dry-run 演习 -v, --verbose 冗长输出 -i, --interact ...