阅读jQuery源代码带给我们的18个惊喜
相信大家都非常熟悉jQuery类库,绝对最受欢迎的JS框架,如果你也有兴趣阅读v源代码的话,或者你也会有同感。
以下便是阅读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源代码阅读之三——jQuery实例方法和属性
jQuery实例方法及属性相关的代码结构如下 jQuery.fn=jQuery.prototype={ jQuery:core_version, constructor:jQuery, selecto ...
- jQuery源代码阅读之二——jQuery静态属性和方法
一.jQuery.extend/jQuery.fn.extend //可接受的参数类型如下:jQuery.extend([deep],target,object1,[objectN]) jQuery. ...
- jQuery源代码框架思路
開始计划时间读源代码,第一节jQuery框架阅读思路整理 (function(){ jQuery = function(){}; jQuery一些变量和函数和给jQuery对象加入一些方法和属性 ex ...
- jQuery源代码学习笔记_工具函数_noop/error/now/trim
jQuery源代码学习笔记_工具函数_noop/error/now/trim jquery提供了一系列的工具函数,用于支持其运行,今天主要分析noop/error/now/trim这4个函数: 1.n ...
- jQuery源代码学习之九—jQuery事件模块
jQuery事件系统并没有将事件坚挺函数直接绑定在DOM元素上,而是基于事件缓存模块来管理监听函数的. 二.jQuery事件模块的代码结构 //定义了一些正则 // // //jQuery事件对象 j ...
- jQuery源代码学习之八——jQuery属性操作模块
一.jQuery属性模块整体介绍 jQuery的属性操作模块分四个部分:html属性操作,dom属性操作,类样式操作,和值操作. html属性操作(setAttribute/getAttribute) ...
- jQuery源代码学习之七—队列模块queue
一.jQuery种的队列模块 jQuery的队列模块主要是为动画模块EFFECTS提供支持,(不过到现在为了支持动画队列的inprogress的出入队还是搞不太清楚),单独抽取出一个命名空间是为了使程 ...
- jQuery源代码学习之六——jQuery数据缓存Data
一.jQuery数据缓存基本原理 jQuery数据缓存就两个全局Data对象,data_user以及data_priv; 这两个对象分别用于缓存用户自定义数据和内部数据: 以data_user为例,所 ...
- jQuery源代码学习之五——jQuery.when
jQuery.when提供了基于一个或多个对象的状态来执行回调函数的功能,通常是基于具有异步事件的异步队列. 如果传入多个异步队列,jQuery.when会返回一个新的主异步队列的只读副本(promi ...
随机推荐
- Openstack关于Regions和Availability Zones
在AWS中有Region和Availability Zones的概念,并且在openstack中也实现了两者,只是不太容易看出来. 此文主要介绍他们的概念和关系,以及在openstack中的实现. 如 ...
- nyoj 737 石子合并 经典区间 dp
石子合并(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆 ...
- FastReport.Net使用:[35]奇偶行
文本控件类型的奇偶行数据实现(普通) 1.普通的奇偶行数据主要使用报表对象的EvenStyle(偶数行样式)属性实现. 首先通过 报表-->样式 菜单打开样式编辑器,编辑几个备用样式. 样式的编 ...
- 【BZOJ 2436】 2436: [Noi2011]Noi嘉年华 (区间DP)
2436: [Noi2011]Noi嘉年华 Description NOI2011 在吉林大学开始啦!为了迎接来自全国各地最优秀的信息学选手,吉林大学决定举办两场盛大的 NOI 嘉年华活动,分在两个不 ...
- CentOS 报错cannot execute binary file
在安装软件过程中执行文件,报错cannot execute binary file 1.查看是否root用户登录,当前用户是否有可执行权限 2.ls -l 查看文件是否具有可执行权限 3.要使用对应的 ...
- 【随机化】【并查集】Gym - 100851J - Jump
题意:交互题,有一个长度为n(偶数)的二进制串,你需要猜不超过n+500次猜到它.如果你猜的串与原串相同的位数为n,那么会返回n,如果为n/2,那么会返回n/2,否则都会返回零. 先random,直到 ...
- [CF226E]Noble Knight's Path
[CF226E]Noble Knight's Path 题目大意: 一棵\(n(n\le10^5)\)个结点的树,初始时所有结点都是白色.\(m(m\le10^5)\)次操作,操作包含以下两种: 将点 ...
- input输入框限制输入英文,数字,汉字
<h1>js验证输入框内容</h1><br /><br /> 只能输入英文<input type="text" onkeyup ...
- .NET 中字符文本中的字符太多 错误处理
错误截图 问题描述 在ASP.NET中使用多层引号,要引起注意,引号使用不当会引起“字符文本中字段太多”编译错误!今天我就遇到了这个错误,整理于此! “字符文本中字段太多”错误提示过 ...
- 微信、小程序开发UI库--weui
一.weui可以开发微信内网页.微信小程序,二者使用的UI库不一样 1. 微信内网页样式文件为 .css文件 链接地址:https://weui.io/ weui-js库: weu ...