相信大家都非常熟悉jQuery类库,绝对最受欢迎的JS框架,如果你也有兴趣阅读v源代码的话,或者你也会有同感。

以下便是阅读jQuery源代码后挖掘的18条令人惊奇的信息:

原文:阅读jQuery源代码带给我们的18个惊喜

1. sizzle的大小

Sizzle是用来帮助jQuery实现DOM查询操作的引擎,可能你不知道它占用了jQuery源代码的22%。

其次最大的特性是$.ajax,占用了jQuery源代码中的8%。

2. $.grep

这个方法类似underscore中的_.filter方法,使用两个参数,一个数组变量和一个回调函数,返回通过回调函数为true的元素。

3. 冒泡提醒

jQuery特意的阻止了一个事件类型的气泡。这就是load事件,jQuery传递了一个特别的noBubble:true来阻止事件冒泡到window对象(这可能导致错误的匹配了window.load事件)

4. 缺省的动画速度

jQuery通过快速的变化元素样式属性来实现动画。每一个变化被叫做一个"滴答"。缺省的动画速度是每13毫秒滴答一次,你可以通过重写jQuery.fx.interval来修改缺省的值

5. $.fn.addClass接受一个方法

我们通常提供$.fn.addClass一个class定义名称。但是它同样可以支持方法。你只需要方法返回一个空格分隔的字符串class定义即可。这个方法甚至接受元素的索引为参数,这样我们可以构建自己的只能class名。

6. $.fn.removeClass同样支持

这个方法也可以支持接受方法为参数,和$.fn.addClass一样。

7. :empty伪选择器

这个伪选择器可以匹配所有没有子元素的元素

8. :lt和:gt伪选择器

这些伪选择器基于索引来匹配。例如,$('div:gt(2)')将会返回所有的div除了前3个元素(基于0索引)。如果你提供一个负值,那么就从末尾算起。

9. $(document.ready()使用了promise

jQuery内部使用了jQuery的deferred来保证DOM完整被加载

10. $.type

大家可能都熟悉typeof来判断数据类型,但是你是否知道jQuery提供了.type()方法?这个方法比浏览器本地版本更智能。

例如,typeof(new Number(3))返回了“object”,然而$.type(new Number(3))放回数字。

更确切的说$.type告诉你返回对象的值类型

。。。。。

。。。。。

阅读原文:阅读jQuery源代码带给我们的18个惊喜

阅读jQuery源代码带给我们的18个惊喜的更多相关文章

  1. jQuery源代码阅读之三——jQuery实例方法和属性

    jQuery实例方法及属性相关的代码结构如下 jQuery.fn=jQuery.prototype={ jQuery:core_version, constructor:jQuery, selecto ...

  2. jQuery源代码阅读之二——jQuery静态属性和方法

    一.jQuery.extend/jQuery.fn.extend //可接受的参数类型如下:jQuery.extend([deep],target,object1,[objectN]) jQuery. ...

  3. jQuery源代码框架思路

    開始计划时间读源代码,第一节jQuery框架阅读思路整理 (function(){ jQuery = function(){}; jQuery一些变量和函数和给jQuery对象加入一些方法和属性 ex ...

  4. jQuery源代码学习笔记_工具函数_noop/error/now/trim

    jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...

  5. jQuery源代码学习之九—jQuery事件模块

    jQuery事件系统并没有将事件坚挺函数直接绑定在DOM元素上,而是基于事件缓存模块来管理监听函数的. 二.jQuery事件模块的代码结构 //定义了一些正则 // // //jQuery事件对象 j ...

  6. jQuery源代码学习之八——jQuery属性操作模块

    一.jQuery属性模块整体介绍 jQuery的属性操作模块分四个部分:html属性操作,dom属性操作,类样式操作,和值操作. html属性操作(setAttribute/getAttribute) ...

  7. jQuery源代码学习之七—队列模块queue

    一.jQuery种的队列模块 jQuery的队列模块主要是为动画模块EFFECTS提供支持,(不过到现在为了支持动画队列的inprogress的出入队还是搞不太清楚),单独抽取出一个命名空间是为了使程 ...

  8. jQuery源代码学习之六——jQuery数据缓存Data

    一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所 ...

  9. jQuery源代码学习之五——jQuery.when

    jQuery.when提供了基于一个或多个对象的状态来执行回调函数的功能,通常是基于具有异步事件的异步队列. 如果传入多个异步队列,jQuery.when会返回一个新的主异步队列的只读副本(promi ...

随机推荐

  1. Educational Codeforces Round 38 部分题解

    D. Buy a Ticket 分析 建一个源点,连向所有结点,边的花费为那个结点的花费,图中原有的边花费翻倍,最后跑一遍最短路即可. code #include<bits/stdc++.h&g ...

  2. HDU 6201 transaction transaction transaction(树形DP)

    transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/1 ...

  3. FastReport.Net使用:[30]对话框使用

    使用对话框需要知道的地方  1.按钮的DialogResult属性. 假如DialogResult属性值为OK的按钮被点击,报表将会展现后面的对话框或者报表页:如果属性值为None,则停留在当前窗体: ...

  4. 洛谷P1149 火柴棒等式

    题目描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注意: 1.加号与等号 ...

  5. 某DP题目4

    题意 有两个栈分别有n和m个数,每次从任意栈中取出一个数,令k为不同输出序列的总数,其中第i种输出序列的产生方式有ai个,求Σai2. n <= 500 分析 此题是关于ai2转换.咋一看此题好 ...

  6. Vue学习记录-画页面

    webstorm 因为之前开发ReactNative的时候,选择了webstorm,这回转战Vue,自然还是用它.如果什么也不做的话,打开Vue工程,编辑区域基本上没有语法高亮.怎么办呢? 安装插件( ...

  7. Webpack使用指南

    Webpack 是当下最热门的前端资源模块化管理和打包工具. 什么是webpack Webpack 是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部 ...

  8. Java中文件与字节数组转换

    注:来源于JavaEye 文件转化为字节数组: http://www.javaeye.com/topic/304980 /** * 文件转化为字节数组 * * @param file * @retur ...

  9. HDU 1171 Big Event in HDU (多重背包变形)

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  10. 引用计数的cocos2dx对象内存管理和直接new/delete box2d对象内存管理冲突的解决方法

    转载请注明: http://blog.csdn.net/herm_lib/article/details/9316601 项目中用到了cocos2dx和box2d,cocos2dx的内存是基于引用计数 ...