摘要:此选择器等价于此选择器等价于要匹配含有特定属性但不等于特定值的元素请使用。之前看到的派上了用场。用法返回值集合元素说明匹配给定的属性是以包含某些值的元素。可以包含任意异步操作,而必须是同步函数。
一面 1. 自我介绍 2. jQuery的选择器
jQuery的选择器与css中的选择器很相似,通过使用css中的选择器来选取HTML节点
1. #id 用法: $("#myDiv"); 返回值 单个元素的组成的集合 说明: 这个就是直接选择html中的id="myDiv" 2. Element 用法: $("div") 返回值 集合元素 说明: element的英文翻译过来是”元素”,所以element其实就是html已经定义的标签元素,例如div, input, a等等. 3. class 用法: $(".myClass") 返回值 集合元素 说明: 这个标签是直接选择html代码中class="myClass"的元素或元素组(因为在同一html页面中 class是可以存在多个同样值的) 4. * 用法: $("*") 返回值 集合元素 说明: 匹配所有元素,多用于结合上下文来搜索 5. selector1, selector2, selectorN 用法: $("div,span,p.myClass") 返回值 集合元素 说明: 将每一个选择器匹配到的元素合并后一起返回.你可以指定任意多个选择器, 并将匹配到的元素合 并到一个结果内。其中p.myClass是表示匹配元素 p class="myClass"
其次可以使用属性选择器,例如input中的name,type属性等
1、[attribute] 用法: $("div[id]") ; 返回值 集合元素 说明: 匹配包含给定属性的元素。例子中是选取了所有带”id”属性的div标签。 2、[attribute=value] 用法: $("input[name="newsletter"]").attr("checked", true); 返回值 集合元素 说明: 匹配给定的属性是某个特定值的元素.例子中选取了所有 name 属性是 newsletter 的 input 元素。 3、[attribute!=value] 用法: $("div[title!="test"]").css("background","yellow"); 返回值 集合元素 说明: 匹配所有不含有指定的属性,或者属性不等于特定值的元素。 此选择器等价于:not此选择器等价于:not([attr=value]),要匹配含有特定属性但不等于特定值的元素,请使用[attr]:not([attr=value])。之前看到的:not 派上了用场。 4、[attribute^=value] 用法: $(”input[name^=‘news’]“) 返回值 集合元素 说明: 匹配给定的属性是以某些值开始的元素.,我们又见到了这几个类似于正则匹配的符号。 5、[attribute$=value] 用法: $("input[name$="letter"]") 返回值 集合元素 说明: 匹配给定的属性是以某些值结尾的元素。 6、[attribute*=value] 用法: $("input[name*="man"]") 返回值 集合元素 说明: 匹配给定的属性是以包含某些值的元素。 7、[attributeFilter1][attributeFilter2][attributeFilterN] 用法: $("input[id][name$="man"]") 返回值 集合元素 说明: 复合属性选择器,需要同时满足多个条件时使用.又是一个组合,这种情况我们实际使用的时候很常用.这个例子中选择的是所有含有 id 属性,并且它的 name 属性是以 man 结尾的元素。
其他具体可以查看JQuery_九大选择器3. 如何寻找子元素a的父元素中带class="abc"的兄弟节点
我的想法是首先寻找a标签的全部祖先元素$("a").parents(),然后找到其中class="abc"的元素$("a").parents().filter(".abc"),最后再找到这些节点的兄弟节点即可$("a").parents().filter(".abc").siblings()4. 写一个简单的jQuery插件(打印"Hello World")
这个主要有两种方法
类级别开发插件
对象级别开发
// 一、类级别开发插件 // 1. 直接给jquer添加全局函数 jQuery.printHelloWorld = function(){ console.log("Hello World!!!"); } // 2. 用extend()方法。extend是jquery提供的一个方法,把多个对象合并起来,参数是object $.extend({ printHelloWorld:function(){ console.log("Hello World!!!"); } }) // 3. 使用命名空间(如果不使用命名空间容易和其他引入的JS库里面的同名方法冲突) jQuery.test = { printHelloWorld: function () { console.log("Hello World!!!"); } } // 调用 $.printHelloWorld(); $.test.printHelloWorld(); // 二、对象级别开发 // 第一行的;一定要写 ;(function($){ $.printHelloWorld = function(){ console.log("Hello World!!!"); } }(jQuery)) // 调用 $.printHelloWorld();5. 跨域的解决方法
经典问题,具体参考深入理解前端跨域问题的解决方案6. ES6有了解吗
首先回答了let与const7. Promise解决了什么问题let定义变量,相对于var,它修复了一些问题,比如变量提升、重复定义等问题,并且const 和let的定义具有块级作用域;
const定义常量,但是const定义的常量只是值不可变,即基本数据类型不可变,对于引用类型,因为它建立的是引用,所以即使使用const定义的对象,其属性还是可变的(这个当时在论客科技的时候就有被追问到);
然后就说到Promise相关
8. 你觉得Promise能解决回调地狱吗?Promise主要解决了回调地狱的问题;
除了解决回调地狱,还可以为了我们的代码更加具有可读性和可维护性,我们需要将数据请求与数据处理明确的区分开来。
当时面试官问这个问题的时候,我认为他问的是怎样正确使用才可以正确解决回调地狱的问题。有一种情况就是即使使用了Promise也同样会出现回调地狱,这是因为使用方法错误了,如下:
// 当时由于刚开始接触Promise还是下意识的使用这种回调方法,导致产生了回调地狱 modifyInfoData().then(function (res) { let info_id = res.body.data; modifyInfoPic(info_id).then(res => { modifyInfoFile(info_id).then(res => { _this.$message({ message: "提交成功", type: "success" }); }) }); }); // 应该修改为 modifyInfoData().then(function (res) { let info_id = res.body.data; modifyInfoPic(info_id); }).then(function (res) { let info_id = res.body.data; modifyInfoFile(info_id); }).then(res => { _this.$message({ message: "提交成功", type: "success" }); });9. 现在有两个字符串var a = "aaa"和var b = "bbb如何不借助任何函数和中间变量交换他们
这里只写一个相对比较万能的方法,其他可以参考JavaScript交换两个变量值的七种解决方案
var a = "aaa"; var b = "bbb"; a = [b, b=a][0]; // 根据运算符优先级,首先执行b=a,此时的b直接得到了a的变量值,然后一步数组索引让a得到了b的值10. vue中vuex的action和mutation区别
11. localStorage和SessionStorage区别只有Mutation可以直接修改State,而Action只能通过Mutation间接的修改State。
Action 可以包含任意异步操作,而Mutation 必须是同步函数。(Mutation 的同步主要是为了可以方便我们在devtools中检测到状态的变化)
在组件中Action是使用dispatch分发,如:this.$store.dispatch("updateUserInfo", "nick");; Mutation使用commit,如:this.$store.commit("increment", "nick");
Action中的方法和 Mutation 一样,最多只有两个形参,第一个为 context,可以为payload,需要传多个参数的时候可以以对象的形式传参。
12. 有一个数据,应该在vue中的哪个钩子函数中执行?localStorage的生命周期是永久性的; sessionStorage 的生命周期是在浏览器关闭前
vue有8大生命周期,用的最多的就是created和 mounted,由于在created阶段中已经完成了data的初始化,所以我认为是可以在这个阶段就向后台请求数据,绑定到data中。13. 如果数据量很大,在created执行会不会很慢?
当我回答后,面试官就接下来问了我下一个问题……
当时我是这样回答的:如果数据量很大,向后台请求速度很慢,我会采用异步加载的方式,在获取数据的时候给页面加载一个loading,使得交互尽量的良好吧。14. 有了解过多页面吗?有处理过自适应呢? 15. 为什么想做前端? 16. 自我驱动?数据驱动? 二面 1. 暑假实习过? 2. 实习主要工作内容? 3. 有做过前端的相关的插件或组件吗? 4. 怎么理解Vue开发? 5. 实习的时候做怎样的系统? 6. 怎么理解Vue开发?这两个问题回答的不是非常的好,希望有人可以帮忙解答一下吗?
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/98338.html
摘要:其中经历了入门到放弃系列的火热,想起了此题目,可直到其热度褪去依然没有开写。再之前的实习也是上午面试下午入职的。 这是前几篇前端面试文章的结尾,是很多个月前就该写下的事情。其中经历了入门到放弃系列的火热,想起了此题目,可直到其热度褪去依然没有开写。不能再拖了,否则事情估计都快忘光了。 面试过程 依然是某金融集团的外包,这次换了一个外包公司。首先是电话面试,还是还是些常见的前端问题,自己...
摘要:阿里巴巴有一群天马行空脚踏实地的阿里星。天马行空脚踏实地奋斗在阿里巴巴生态圈里,阿里星们高考状元清华博士论文达人的光环早已褪去,但是不断学习,不断接受挑战,仍然是这些学霸的本色。 showImg(https://segmentfault.com/img/remote/1460000018728353); 阿里巴巴有一群天马行空脚踏实地的阿里星。 阿里巴巴的春季校招已经启动。在阿里的技术...
摘要:阿里巴巴有一群天马行空脚踏实地的阿里星。天马行空脚踏实地奋斗在阿里巴巴生态圈里,阿里星们高考状元清华博士论文达人的光环早已褪去,但是不断学习,不断接受挑战,仍然是这些学霸的本色。 showImg(https://segmentfault.com/img/remote/1460000018728353); 阿里巴巴有一群天马行空脚踏实地的阿里星。 阿里巴巴的春季校招已经启动。在阿里的技术...
摘要:数据结构和算法树快速排序,堆排序,插入排序其实八大排序算法都应该了解一致性算法,一致性算法的应用的内存结构。如何存储一个的。八大排序算法一定要手敲一遍快排,堆排尤其重要。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。 前言 16年毕业到现在也近两年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,...
摘要:中四种修饰符的限制范围。数据结构和算法树快速排序,堆排序,插入排序其实八大排序算法都应该了解一致性算法,一致性算法的应用的内存结构。的部署方式,主从,集群。八大排序算法一定要手敲一遍快排,堆排尤其重要。 前言 15年毕业到现在也近三年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有...
阅读 3529·2023-04-26 02:10
阅读 1206·2021-11-22 15:25
阅读 1625·2021-09-22 10:02
阅读 866·2021-09-06 15:02
阅读 3416·2019-08-30 15:55
阅读 567·2019-08-30 13:58
阅读 2715·2019-08-30 12:53
阅读 3008·2019-08-29 12:38