jQuery()可以匹配以下字符串情况:
//选择dom元素
$(‘#id’) $(‘.className’) $(‘div’) $(‘ul > li’) $(‘ul li’)
$(‘li’, ‘ul’)//匹配的是ul下的li,ul外的li不被匹配
$(‘li:eq(0)’)
//创建dom元素
$(‘
- asdf
- ’) $(‘
’) $(‘’) $(‘
- asdf’)
-
区分字符串,获取匹配暂存量
字符串又分为几种情况,将不同的结果暂存在match中之后再区分处理:
1.标准html标签,如:
<li>asdf</li>
,<p>
,<img />
匹配规则:以"<"开头,以 “>” 结尾,并且字符串总长度不少于3;
匹配暂存中间量:
match = [ null, selector, null ];
2.非标准html标签或id选择器,如:
<li>asdf
或者#demo
匹配规则:
/^(?: \s* (<[\w\W]+>) [^>]* | #([\w-]+))$/,
-
\s*:零个或多个空字符
-
(<[\w\W]+>):<任意字符>
-
[^>]*:不是”>“的零个或多个字符
-
| :或者
-
#([\w-]+)):#(单词/字母/-中的一个或多个),代表匹配id选择器
2.1 不标准html标签,以
<li>asdf
为例子,匹配暂存变量:
match = ["<li>asdf", "<li>", undefined]
2.2 id选择器,以
#demo
为例子,匹配暂存变量:
match= ["#demo", undefined, "demo"]
第一种和第2.1种属于创建标签,第2.2种属于寻找标签
3.如果不是标准html标签,正则表达式又匹配不到的字符串,如:
$('li:eq(0)')
匹配暂存:
match = null
如传入:
.demo
以暂存量为基础进一步处理
从上一小节获得的match,在这一步骤做处理,分成几种情况,分别处理不同字符串
1.match第一种处理的匹配条件:( match && ( match[ 1 ] || !context ) )
-
match不为空
-
match[1]不为空 或 match[1]和context均为空
匹配前两种字符串,”match[1]不为空“匹配第一种和第2.1种;”match[1]和context均为空“匹配第2.2种
在非标准html情况中,match[1]不为空代表正则表达式的第一个子表达式被匹配;
match[1]为空代表正则表达式的第一个子表达式没有匹配到,第二个子表达式才被匹配,即匹配的是id选择器(id命名默认使用唯一命名,不需要上下文)
1.1 当match不为空时
生成原生dom并封装成jQuery对象:parseHTML将标签字符串转成包裹了dom对象的类数组,不完整的标签中非标签部分,如
<li>asdf
中的asdf不予理会,再由merge函数将这些对象合并,并返回如:将
<li></li>
转成类数组对象,再合并到this中返回或者,如果用户传入的不仅仅是html标签,还传入了属性,如:
在match[1]是单独一个标签(不是
<li></li><li></li>
),第二个参数是对象的情况下(默认这个对象存的是属性及属性值),遍历这个对象,当jQuery有添加这个属性的方法时,执行这个方法,如果没有,就用attr的方式添加到dom上去this[match]的理解:this是当前jQuery对象,match是第二个参数传进来的对象中的某一个key值,相当于上一个截图里的html
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
/20210419193354991.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0tlcGxlcl9JSQ==,size_16,color_FFFFFF,t_70)
虽只说了一个公司的面试,但我们可以知道大厂关注的东西并举一反三,通过一个知识点延伸到另一个知识点,这是我们要掌握的学习方法,小伙伴们在这篇有学到的请评论点赞转发告诉小编哦,谢谢大家的支持!
-