- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 商务办公会议PPT模板(红色系).ppt
- 商务沟通技巧(英文版).ppt
- 商务PPT模板(动画).ppt
- 商务会议PPT模板(蓝色系).ppt
- 商务沟通与商务谈判技巧.pdf
- 商务礼仪_仪表礼仪.ppt
- 商务礼仪_商务派对、娱乐礼仪.ppt
- 同致地产2011年3月广州横沙项目商业策划研究.ppt
- 商务谈判心理运用技巧.ppt
- 商务礼仪:商务服饰的礼仪.ppt
- 2024自考专业(人力资源管理)试卷附参考答案详解(预热题).docx
- 2024自考专业(人力资源管理)试卷带答案详解(预热题).docx
- 2024自考专业(人力资源管理)试卷附参考答案详解(巩固).docx
- 《旅游饭店客房隐私保护指南》.pdf
- 2024自考专业(人力资源管理)试卷带答案详解(B卷).docx
- 《旅游饭店客房清洁服务规范》.pdf
- 初中语文统编版2024年七年级上册:15_ 梅岭三章-教学课件.pptx
- 2024自考专业(人力资源管理)自我提分评估(培优B卷)附答案详解.docx
- 2024自考专业(人力资源管理)试卷带答案详解(达标题).docx
- 【奥数易错汇编】小学数学小学六年级下册奥数高频考点常考易错题汇编——计数问题——田忌赛马问题(含答案).pdf
最近下载
- 露天矿采矿与剥离作业规程.pdf VIP
- 电大国家开放大学《政府经济学》(本)2025-2026期末试题及答案2025.pdf VIP
- 第27课 定速巡航的控制 教案 义务教育人教版信息科技六年级全一册.docx VIP
- 幼儿园美术教案《沙漠里的树》植树节主题活动PPT课件.doc VIP
- Java基础知识大全单选题100道及答案.docx VIP
- 工匠精神精品课件.pptx
- 25《带上她的眼睛》课件(共45张PPT).pptx
- 上海海事大学2021-2022年《货币银行学》期末考试试卷(A卷)含参考答案.docx
- 2024年福建省中考化学真题试卷(含答案).docx VIP
- 风电场并网测试方案.docx
文档评论(0)