JQUERY选择器的工作原理和优化的详细讲解.docVIP

JQUERY选择器的工作原理和优化的详细讲解.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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到底是做用的: ?????? fi

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档