资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

jquery实现原理,简述jquery的实现原理

ajax在jquery的底层是怎么实现的呢?

它的底层实现包括下面几个方面:1.jQuery底层在实现ajax功能时,调用了浏览器中的XMLHttpRequest对象,在最新的2.0版本后,由于不考虑IE浏览器的支持,直接使用该对象获取用户请求的数据,包括地址和参数等。2.它将对象打开请求地址时的相关参数封装在相关函数如ajax()的配置项中,一旦传入了必需选项,则直接调用相应的send()方法进行数据的请求。3.jQuery底层将对象请求后返回的数据结果,直接封装到相关函数的success方法中,所以,一旦异步请求成功,返回的数据对象直接注入到方法中,因此,可以调用success方法获取服务端返回的数据。我之前在黑马程序员的免费视频中看到过ajax和jQuery的相关视频,讲的都还挺不错的。

在蓬溪等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、成都网站设计 网站设计制作按需网站开发,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销推广,外贸营销网站建设,蓬溪网站建设费用合理。

jquery怎么实现移动端手指滑动事件?

一、原理及实现方法如下:

1、当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和纵坐标startY;

2、当触发touchmove事件时,在获取此时手指的横坐标moveEndX和纵坐标moveEndY;最后,通过这两次获取的坐标差值来判断手指在手机屏幕上的滑动方向。

二、注意:

手指在滑动整个屏幕时,会影响浏览器的行为,比如滚动和缩放。所以在调用touch事件时,要注意禁止缩放和滚动。

1.禁止缩放 

通过meta元标签来设置。

2.禁止滚动 

preventDefault是阻止默认行为,touch事件的默认行为就是滚动。 

event.preventDefault()。

jQuery的getScript.fail实现的原理是怎样的

jquery用AJAX读回来代码字符串然后用下面的代码执行读取回来的script

( window.execScript || function( script ) {

window[ "eval" ].call( window, script );

} )( script );

JavaScript中Promise模式。

jquery拖动层的工作原理

主要分三个部分,注册Handler的Click事件

Click事件引发是开始拖动,此时注册Document的MouseMove事件,Move的时候修改对象的位置

松开或者ESC的时候取消移动,注销Document的Move事件

基本上所有的DragDrop都是这么实现的

jQuery选择器的工作原理和优化分析

每次申明一个jQuery对象的时候,返回的是jQuery.prototype.init

对象,很多人就会不明白,init明明是jQuery.fn的方法啊,实际上这里不是方法,而是init的构造函数,因为js的prototype对象可

以实现继承,加上js的对象只是引用不会是拷贝,new

jQuery,new

jQuery.fn和new

jQuery.fn.init的子对象是一样的,只是有没有执行到init的不同,这里就不讲原因了,等下一篇再讲为什么会是这样。

当我们使用选择器的时候$(selector,content),就会执行

init(selectot,content),我们看看inti中是怎样执行的:

复制代码

代码如下:

if

(

typeof

selector

==

"string"

)

{

//正则匹配,看是不是HTML代码或者是#id

var

match

=

quickExpr.exec(

selector

);

//没有作为待查找的

DOM

元素集、文档或

jQuery

对象。

//selector是#id的形式

if

(

match

(match[1]

||

!context)

)

{

//

HANDLE:

$(html)

-

$(array)

//HTML代码,调用clean补全HTML代码

if

(

match[1]

){

selector

=

jQuery.clean(

[

match[1]

],

context

);

}

//

是:

$("#id")

else

{

//判断id的Dom是不是加载完成

var

elem

=

document.getElementById(

match[3]

);

if

(

elem

){

if

(

elem.id

!=

match[3]

)

return

jQuery().find(

selector

);

return

jQuery(

elem

);//执行完毕return

}

selector

=

[];

}

//非id的形式.在context中或者是全文查找

}

else{

return

jQuery(

context

).find(

selector

);

}

}

这里就说明只有选择器写成$(‘#id')的时候最快,相当于执行了一次

getElementById,后边的程序就不用再执行了。当然往往我们需要的选择器并不是这么简单,比如我们需要id下的CSS为className,

有这样的写法$(‘#id.className')和$(‘#id').find(‘.className');这两种写法的执行结果都是一样的,比

如div

id=”id”span

class=”className”/span/div,返回的肯定都是span

class=”className”/span,但是执行的效率是完全不一样的。

在分析一下上边的代码,如果不是$(‘#id')这样的简单选择器的话,都会执行find函

数,那我们再看看find到底是做用的:

复制代码

代码如下:

find:

function(

selector

)

{

//在当前的对象中查找

var

elems

=

jQuery.map(this,

function(elem){

return

jQuery.find(

selector,

elem

);

});

//下边的代码可以忽略,只是做一些处理

//这里应用了js的正则对象的静态方法test

//indexOf("..")需要了解一下xpath的语法,就是判断selector中包含父节点的写法

//本意就是过滤数组的重复元素

return

this.pushStack(

/[^+]

[^+]/.test(

selector

)

||

selector.indexOf("..")

-1

?

jQuery.unique(

elems

)

:

elems

);

}

如果这样写$(‘#id

.className'),就会执行到扩展的find(‘#id

.className',document),因为当前的this是document的jQuery数组,那我们在看看扩展的find他的实现,代码比较

多,就不列出来,总之就是从第二个参数传递进行的dom第一个子节点开始找,遇见#比对id,遇见.比对ClassName,还有:+-等处理。

那我们要优化,是不是就要想办法让第二个参数context的范围最小,那样遍历是不是就很少了?

如果我们这样写$(‘#id').find(‘.className'),那程序只这样执行

的,第一次init的时候执行一步getElementById,就return了,接着执行

find(‘.className',divDocument),divDocument就是我们第一次选择的是div标签,如果document下有很

多dom对象的时候,这次只遍历divDocument是不是少了很多次,而且在第一次选择id的速度也要比遍历快的多。

现在大家应该是明白了吧。就是说第一层选择最好是ID,而是简单选择器,目的就是定义范围,

提高速度,这次就说这些,选择写法的优化,其他的优化,下次再说。


当前名称:jquery实现原理,简述jquery的实现原理
网页URL:http://cdkjz.cn/article/hoichp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220