总结
=============================================================
从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。
个人将这段时间所学的知识,分为三个阶段:
第一阶段:HTML&CSS&JavaScript基础
第二阶段:移动端开发技术
第三阶段:前端常用框架
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。
开源分享:docs.qq.com/doc/DSmRnRG… (obj).parent().parent().siblings().children().children("#"+type+"div").show(); (obj).parent().parent().siblings().children().children("#"+type+"div").children().attr("require","true"); }else{ /* java端处理需注意 首先校验是否勾选,若勾选才取值 */ (obj).parent().parent().siblings().children().children("#"+type+"div").hide(); (obj).parent().parent().siblings().children().children("#"+type+"div").children().removeAttr("require"); } }
其中,
* `jQuery.parent(expr)` 找父亲节点,可以传入expr进行过滤,比如`$("span").parent()`或者`$("span").parent(".class")`;
* `jQuery.parents(expr)`,类似于`jQuery.parents(expr)`,但是是查找所有祖先元素,不限于父元素;
* `jQuery.children(expr)`.返回所有子节点,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点;
* `jQuery.contents()`,返回下面的所有内容,包括节点和文本。这个方法和children()的区别就在于,包括空白文本,也会被作为一个jQuery对象返回,children()则只会返回节点;
* `jQuery.prev()`,返回上一个兄弟节点,不是所有的兄弟节点;
* `jQuery.prevAll()`,返回所有之前的兄弟节点;
* `jQuery.next()`,返回下一个兄弟节点,不是所有的兄弟节点;
* `jQuery.nextAll()`,返回所有之后的兄弟节点;
* `jQuery.siblings()`,返回兄弟姐妹节点,不分前后;
* `jQuery.find(expr)`,跟`jQuery.filter(expr)`完全不一样。jQuery.filter()是从初始的jQuery对象集合中筛选出一部分,而jQuery.find()的返回结果,不会有初始集合中的内容,比如`$("p"),find("span")`,是从p元素开始找,等同于`$("p span")`;
那么在`js`中又是如何实现的呢?下面讲解下`javascript` 中的`nextSibling`和`previousSibling`使用注意事项。
`JavaScript`中的`nextSibling`和`previousSibling`和作用类似于`jquery`的`next()`和`prev()`,都是获取下一个/上一个同胞元素,如果下一个同级节点不存在,则此属性返回值是`null`。但是具体的使用中还是有差异的,如果稍不注意,就会引起错误。
`html`结构中的各种空格,换行符都可能会把文本节点当做同胞元素处理。这就会导致错误。
例如下面代码
Document
我是p
我是span
在上面这段代码中,获取了id为"one"的元素并用`nextSibling`获取了他的下一个同胞元素。赋值给了变量`nextType`。
var nextType = document.getElementById('one').nextSibling;
并使用 `alert(nextType.nodeType);`弹出他的节点类型,如果按常理,元素p下一个相邻的同胞元素为是`span`,弹出的数字应该为“1”,但我在火狐,谷歌,IE浏览器(网上说只有火狐才会把换行,空格当做文本节点处理,但是我测试谷歌,IE浏览器效果都是一样的,这有点不解)打开后,弹出的数字是3,也就是文本节点。这是因为换行符被当做文本节点来处理,成为了p元素的下一个同胞元素。
如果我要获取`span`的文本值,需要这样写
Document
我是p
我是span
p和span标签中间隔着文本节点,需要连续使用2次nextSibling才能选中span标签取得文本值。
注意⚠️:`firstChild,lastChild,nextSibling,previousSibling`都会将空格或者换行当做节点处理,但是有代替属性。所以为了准确地找到相应的元素,会用`firstElementChild`,`lastElementChild`,`nextElementSibling`,`previousElementSibling`兼容的写法,这是`JavaScript`自带的属性。
但坏消息是IE6,7,8不兼容这些属性。IE9以上和火狐谷歌支持。可参考下面的方法过滤文本节点获取正确的下一个元素节点。
function getNextElement(element){
var e = element.nextSibling;
if(e == null){//测试同胞节点是否存在,否则返回空
return null;
}
if(e.nodeType==3){//如果同胞元素为文本节点
var two = getNextElement(e);
if(two.nodeType == 1)
return two;
总结
=============================================================
从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
个人将这段时间所学的知识,分为三个阶段:
第一阶段:HTML&CSS&JavaScript基础
第二阶段:移动端开发技术
第三阶段:前端常用框架
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;如果因为我的笔记太过简陋不理解,可以关注我以后我还会继续分享。
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。