jquery的源码分析,jquery源码下载

如何正确阅读jquery源码和jquery插件源码

1. jQuery 里面有很多东西是出于兼容性,历史遗留。

成都网站设计、成都网站建设介绍好的网站是理念、设计和技术的结合。创新互联拥有的网站设计理念、多方位的设计风格、经验丰富的设计团队。提供PC端+手机端网站建设,用营销思维进行网站设计、采用先进技术开源代码、注重用户体验与SEO基础,将技术与创意整合到网站之中,以契合客户的方式做到创意性的视觉化效果。

比如 .ready() 之类的函数,为什么会很scroll 有关,那是为了兼容某些ie。这种代码对于编程思想来说不仅没用,而且是杂音,你要筛选出来就得了解这段代码的变动,费心费力得不偿失。

2. jQuery 里面的代码不一定是最优的,例如事件委托,每一次事件触发都要调用选择器,实际上是效率很低的。但是我又比较懒,没有提交patch。

3. jQuery 实际上很容易写出来一个 barebone alternative,在使用的过程中多想,多思考多总结就可以了。

4. jQuery 这类框架里真正有思维挑战性的东西不多,一半以上是堆代码而已,剩下的一点价值在于架构、抽象、扩展能力。

5. 我有一句话与所有的同行分享:工程师让需求成为现实,优秀工程师化复杂为简单,顶尖工程师变不可能为可能;架构师掌握现在,优秀架构师展望未来,顶尖架构师创造时代。

jQuery 的设计目的是,让前端工程师的工作更简单更轻松,但它并不适合所有的前端工程师,假如你的目标是成为优秀架构师、顶尖架构师的话,你在jQuery里也看不清未来。

jquery源码 ,jquery选择器,javascript,正则表达式

quickExpr应该是个二义正则。前半段是:

^[^]*([\w\W]+)[^]*$:我猜测意思是一个简单的标签。如$('divnew Div/div')匹配的用法。

后半段是:

^#([\w-]+)$:这个显然就是id选择器。-getElementById

注意两个正则用了|来分隔二义,所以你这里的匹配不成功是正常的。

jquery应该是根据这个quickExpr来判断

if(match[1]) createNewfragment();....

else if(match[2]) getElementById();

当然这只是个人猜测,没有细读jquery源码。仅做参考

jquery each()源代码

复制代码

代码如下:

//

args

is

for

internal

usage

only

each:

function(

object,

callback,

args

)

{

var

name,

i

=

0,

length

=

object.length,

isObj

=

length

===

undefined

||

jQuery.isFunction(object);

if

(

args

)

{

if

(

isObj

)

{

for

(

name

in

object

)

{

if

(

callback.apply(

object[

name

],

args

)

===

false

)

{

break;

}

}

}

else

{

for

(

;

i

length;

)

{

if

(

callback.apply(

object[

i++

],

args

)

===

false

)

{

break;

}

}

}

//

A

special,

fast,

case

for

the

most

common

use

of

each

}

else

{

if

(

isObj

)

{

for

(

name

in

object

)

{

if

(

callback.call(

object[

name

],

name,

object[

name

]

)

===

false

)

{

break;

}

}

}

else

{

for

(

var

value

=

object[0];

i

length

callback.call(

value,

i,

value

)

!==

false;

value

=

object[++i]

)

{}

}

}

return

object;

},

分析:jquery文档说

each(callback)作用是以每一个匹配的元素作为上下文来执行一个函数。就是用each来遍历数组,来执行同一个方法

这个方法的实现最关键的是:call与apply的用法:call(apply)就是将函数的对象的从初始的上下文改为thisObj指向的对象,

就是说用thisObj来代替原来的对象来执行方法:call与apply的第一个参数为this指向的对象,而后面的参数都下传给函数的,

call传给函数的参数用逗号分隔而apply则为一个数组。

//1.callback.apply(

object[

name

],

args

)

//2.callback.call(

object[

name

],

name,

object[

name

]

)

jQuery源码分析之实例find和filter方法的区别七问

filter()过滤DOM元素包装集,是指操作当前元素集,删除不匹配的元素,得到一个新的集合

$('div').filter('.div1');//选择div标签中class属性为div1的div元素

find()在当前选中元素的上下文中找到符合条件的后代,返回的是子元素

$('div').find('em');//选择div标签中的em标签的元素

filter()是对选中的元素集合操作,得到这些元素中符合条件的元素,而find()是得到选中元素 中符合条件的后代子元素。


本文题目:jquery的源码分析,jquery源码下载
本文网址:http://hbruida.cn/article/phdgcg.html