‘壹’ 完全理解jQuery源代码,在前端行业算什么水平
依读了2周jQuery源码的人感觉来说,完全理解jQuery,就拿jQuery 1.11这个版本10337行代码来说,水平已经很不错了。谦虚点说,已经入门。骄傲点,国内领先水平。但其码我感觉是js架构之路起行的第一步,完全理解源码,说明有独立构建或组织大型web前端框架的能力和基础。然后看看完全理解jQuery是一个怎么样的状态。
看下面几个链接就明白了:
RubyLouvre/avalon · GitHub
artDialog
aui/artDialog · GitHub(后来的新版代码有所改变)
没错,这两个里边,就是在继承jquery的基础上做了自己的创新尝试。
然后在看下面这位:
[原创] jQuery1.6.1源码分析系列(停止更新)
是唯一出过jquery源码分析书的一位:
《jQuery技术内幕:深入解析jQuery架构设计与实现原理》(高云)【摘要 书评 试读】
然后在看这位:
jQuery 2.0.3 源码分析系列
是目前一直在更新的一位,通俗有深度且版本比较新。
在说一下我2周阅读jquery源码的心得,初看源码写的恶心,再看写的不错,细看写的真是精妙。然后今天在看ext 4.2的源码,真是流畅易读。基本来说,看懂jQuery源码,以后的源码学习之路可以说,平坦。
然后说是不是高手,高手只是一个自我定位的心理暗示,是一种人格魅力的体现,是业务与技术的完美结合。个人感觉只能无限的接近,不能在有限的生命里边到达。我们在通往目的地过程中享受一路的风景,这才是生命的意义。
然后在说前端,前端的核心是js,外围打酱油的技术太多,不一一列举。
css就像一瓶酒,得品。
html,css总共就那些标签跟选择器属性什么的,但是要写一个有扩展性,健壮性或维护性的页面不容易。现在写页面基本条件反射,不是如何快速的完成,而是思考如果有前端界面需求修改,怎么在修改代码最少的情况下完成整体需求任务。
js就像一把剑,得磨。
js刚开始只是为了较验,随便技术社会的发展,承担的角色越来越重,刚开始玩玩jQuery感觉已经会js了,其实只是冰山一角。随着对js的了解越来越多,他即变态又可爱,即好玩又难控,即有很多兼容问题,但解决兼容是我们基本生存之道。
人生就是一场梦,得作。
技术只是生活的一部分,曾经雄心斗志,如今低头写码。改变能改变的,接受不能改变的。人生有限,兄争朝夕啊。
最后说,什么时候能阅读jQuery源码,我感觉其码是纯js编码一年以上,js基础知识没有盲点。阅读源码,确实能学到很多东西。不只是技术,而是一种生活的态度。一种把一件事情做到极致的态度
‘贰’ 2019Web前端面试题及答案汇总-Jquery篇
今天小编要跟大家分享的文章是关于2019Web前端面试题及答案汇总-Jquery篇。相信最近准备参加Web前端面试的小伙伴一定不在少数,为了帮助大家顺利的通过面试成为一名优秀的Web前端工程师,小编为大家准备了前端面试题系列,通过Web知识的整理以及经验的总结,希望能帮到更多的前端面试者。
Jquery相关
1、jQuery库中的$()是什么?
$()函数是jQuery()函数的别称。$()函数用于将任何对象包裹成jQuery对象,接着你就被允许调用定义在jQuery
对象上的多个不同方法。你可以将一个选择器字符串传入$()函数,它会返回一个包含所有匹配的DOM元素数组的jQuery对象。
2、如何找到所有HTMLselect标签的选中项?
$('[name=selectname]:selected')
3、$(this)和this关键字在jQuery中有何不同?
$(this)返回一个jQuery对象,你可以对它调用多个jQuery方法,比如用text()获取文本,用val()
获取值等等。
而this代表当前元素,它是JavaScript关键词中的一个,表示上下文中的当前DOM元素。你不能对它调用jQuery方法,直到它被
$()函数包裹,例如$(this)。
4、jquery怎么移除标签onclick属性?
获得a标签的onclick属性:$("a").attr("onclick")
删除onclick属性:$("a").removeAttr("onclick")
设置onclick属性:$("a").attr("onclick","test();")
5、jquery中addClass、removeClass、toggleClass的使用。
$(selector).addClass(class):为每个匹配的元素添加指定的类名
$(selector).removeClass(class):从所有匹配的元素中删除全部或者指定的类,删除class中某个值;
$(selector).toggleClass(class):如果存在(不存在)就删除(添加)一个类
$(selector).removeAttr(class);删除class这个属性;
6、JQuery有几种选择器?
(1)、基本选择器:#id,class,element,*;
(2)、层次选择器:parent>child,prev+next,prev~siblings
(3)、基本过滤器选择器::first,:last,:not,:even,:odd,:eq,:gt,:lt
(4)、内容过滤器选择器::contains,:empty,:has,:parent
(5)、可见性过滤器选择器::hidden,:visible
(6)、属性过滤器选择器:[attribute],[attribute=value],[attribute!=value]
,[attribute^=value],[attribute$=value],[attribute*=value]
(7)、子元素过滤器选择器::nth-child,:first-child,:last-child,:only-child
(8)、表单选择器::input,:text,:password,:radio,:checkbox,:submit等;
(9)、表单过滤器选择器::enabled,:disabled,:checked,:selected
7、jQuery中的Delegate()函数有什么作用?
delegate()会在以下两个情况下使用到:
1)、如果你有一个父元素,需要给其下的子元素添加事件,这时你可以使用delegate()了,代码如下:
$("ul").delegate("li","click",function(){$(this).hide();});
2)、当元素在当前页面中不可用时,可以使用delegate()
8、$(document).ready()方法和window.onload有什么区别?
(1)、window.onload方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行的。
(2)、$(document).ready()方法可以在DOM载入就绪时就对其进行操纵,并调用执行绑定的函数。
9、如何用jQuery禁用浏览器的前进后退按钮?
实现代码如下:
$(document).ready(function(){
window.history.forward(1);
//ORwindow.history.forward(-1);
});
10、jquery中$.get()提交和$.post()提交有区别吗?
相同点:都是异步请求的方式来获取服务端的数据;
异同点:
1、请求方式不同:$.get()方法使用GET方法来进行异步请求的。$.post()方法使用POST方法来进行异步请求的。
2、参数传递方式不同:get请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给Web服务器的,这种传递是对用户不可见的。
3、数据传输大小不同:get方式传输的数据大小不能超过2KB而POST要大的多
4、安全问题:GET方式请求的数据会被浏览器缓存起来,因此有安全问题。
11、写出一个简单的$.ajax()的请求方式?
$.ajax({
url:'http://www..com',
type:'POST',
data:data,
cache:true,
headers:{},
beforeSend:function(){},
success:function(){},
error:function(){},
complete:function(){}
});
ja
以上就是小编今天为大家分享的关于2019Web前端面试题及答案汇总-a
Jquery篇的文章,希望本篇文章中的面试题能够对正准备参加Web前端面试的小伙伴们有所帮助。想要了解更多Web前端方面的知识记得关注北大青鸟Web前端培训官网。最后祝愿小伙伴们面试成功成为一名优秀的Web前端工程师。
‘叁’ 一个点击的切换div的js或者jquery效果,如图
$(function(){
GoSwitch=function(a){
$(".layout").removeClass("check");
$("#"+this.rel).addClass("check");
};
});
js:
div.layout{z-index:0;position:position;}
.check{z-index:1}
css:
<divclass="layout"id="flash1">
<arel="flash1"onclick="GoSwitch(this)">点我</a>
<div>flash或者随便放啥</div>
</div>
<divclass="layout"id="flash2">
<arel="flash2"onclick="GoSwitch(this)">点我</a>
<div>flash或者随便放啥</div>
</div>
html:
‘肆’ 前端不会jQuery,会不会让人笑话
这个 jQuery是web前端的必修课啊,不过你要是写原生JavaScript的大神的话,可以完美解决兼容之类的问题 ,那也无所谓,不过会jQuery做前端的话 等于是站在巨人的肩膀上成长了,另外前端的框架还有bootstrap,angular等等
‘伍’ 请问前端用jquery如何调用 java写的webservice接口
用jquery ajax,如果不行,就调试一下看哪里出错。在chrome下右键点击审查元素,如果出现
‘Failed to load resource: the server responded with a status of 500’的提示,那就是webservice方法有问题。或者在浏览器上输入地址加webservice测试一下webservice是否可用,如果可用那就是js语法的问题了。
‘陆’ jQuery实现的测试答题的JS代码怎么写,随机读取我这个json代码中的一题,点击上和下可以来回切换,算得分
手写 jq框架自己替换 其他直接复制运行就行了 采纳
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<div id="demo">
<div class="list">
<p id="question"></p>
<p id="answers"></p>
<p id="correctAnswer">正确答案:<span></span></p>
</div>
<div class="list">
<button id="next">下一题</button>
<button id="prev">上一题</button>
</div>
</div>
<script type="text/javascript" src="js/jquery-2.1.0.js" ></script>
<script>
var init={'questions':[
{'question':'jQuery是什么?','answers':['JavaScript库','CSS库','PHP框架','以上都不是'],'correctAnswer':1},
{'question':'找出不同类的一项?','answers':['写字台','沙发','电视','桌布'],'correctAnswer':3},
{'question':'国土面积最大的国家是:','answers':['美国','中国','俄罗斯','加拿大'],'correctAnswer':3},
{'question':'月亮距离地球多远?','answers':['18万公里','38万公里','100万公里','180万公里'],'correctAnswer':2}]}
var questions = init.questions
var mathLen = questions.length
var mathNum = parseInt(mathLen*Math.random())
function setHtml(num){
var mathTitle = questions[num].question
var mathAnswer = questions[num].answers
var correctAnswer = questions[num].correctAnswer
var span = ""
for (var i=0;i<mathAnswer.length;i++) {
span+="<span style='margin-right:10px'>"+mathAnswer[i]+"</span>"
}
$("#question").html(mathTitle)
$("#answers").html(span)
$("#correctAnswer span").html(correctAnswer)
}
$(function(){
setHtml(mathNum)
$("#next").click(function(){
if(mathNum==mathLen-1){
mathNum=0
setHtml(mathNum)
}else{
mathNum = mathNum+1
setHtml(mathNum)
}
})
$("#prev").click(function(){
if(mathNum==0){
mathNum=mathLen-1
setHtml(mathNum)
}else{
mathNum = mathNum-1
setHtml(mathNum)
}
})
})
</script>
</body>
</html>
‘柒’ 一个js与jquery的问题,是动态切换<li>列表的问题,代码如下
可以先循环一遍 li ,将里面的img都display:none掉,或者直接在img标签内添加 style="display:none"属性(Js一开始就先显示第一张图片就OK的),具体看如下代码所示:
<scripttype="text/javascript"src="jquery.js"></script>
<divclass='box'>
<li><imgsrc="images/demo.jpg"width="200"height="200"border="0"alt=""></li>
<li><imgsrc="images/demo1.jpg"width="200"height="200"border="0"alt=""></li>
<li><imgsrc="images/demo.jpg"width="200"height="200"border="0"alt=""></li>
<li><imgsrc="images/demo1.jpg"width="200"height="200"border="0"alt=""></li>
<li><imgsrc="images/demo.jpg"width="200"height="200"border="0"alt=""></li>
<li><imgsrc="images/demo1.jpg"width="200"height="200"border="0"alt=""></li>
</div>
<scripttype="text/javascript">
$(document).ready(function(){
//先隐藏所有的[或者直接在img后面加style="display:none;"]
$('.box').find('li').each(function(){
$(this).hide();
});
//显示第一个
$('.box').find('li:first').show();
setInterval(function(){
$('div.boxli').eq(0).appendTo('div.box');
$('div.boxli').hide();
$('div.boxli').eq(0).slideDown('slow');
},3000);
})
</script>
复制粘贴一下,将jQuery类库地址改一下,将图片地址改一下,测试一下,看看是否OK!
‘捌’ 做前端的能不能不学习 JavaScript 而直接学习 jQuery
前端前景是很不错的,像前端这样的专业还是一线城市比较好,师资力量跟得上、就业的薪资也是可观的,学习前端面授班的时间大约半年,学习前端可以按照路线图的顺序,
0基础学习前端是没有问题的,关键是找到靠谱的前端培训机构,你可以深度了解机构的口碑情况,问问周围知道这家机构的人,除了口碑再了解机构的以下几方面:
1. 师资力量雄厚
要想有1+1>2的实际效果,很关键的一点是师资队伍,你接下来无论是找个工作还是工作中出任哪些的人物角色,都越来越爱你本身的技术专业前端技术性,也许的技术专业前端技术性则绝大多数来自你的技术专业前端教师,一个好的前端培训机构必须具备雄厚的师资力量。
2. 就业保障完善
实现1+1>2效果的关键在于能够为你提供良好的发展平台,即能够为你提供良好的就业保障,让学员能够学到实在实在的知识,并向前端学员提供一对一的就业指导,确保学员找到自己的心理工作。
3. 学费性价比高
一个好的前端培训机构肯定能给你带来1+1>2的效果,如果你在一个由专业的前端教师领导并由前端培训机构自己提供的平台上工作,你将获得比以往更多的投资。
希望你早日学有所成。
‘玖’ Web前端初学者应该学习的jQuery技巧
今天小编要跟大家分享的文章是关于
Web前端初学者应该学习的jQuery技巧!jQuery在Web前端学习里是很重要的一块知识,很多人都在这阶段学习的时候遇到问题,那么作为刚刚接触web前端的初学者来说都应该学习哪些Web前端初学者应该学习的jQuery技巧呢?让我们一起来看一看吧!
1、关于页面元素的引用
通过jquery的$引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。
2、jQuery对象与dom对象的转换
只有jquery对象才能使用jquery定义的方法。注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象。普通的dom对象一般可以通过$转换成jquery对象。
如:$(document.getElementById("msg"))则为jquery对象,可以使用jquery的方法。
由于jquery对象本身是一个集合。所以如果jquery对象要转换为dom对象则必须取出其中的某一项,一般可通过索引取出。
如:$("#msg")[0],$("div").eq(1)[0],$("div").get[1],$("td")[5]这些都是dom对象,可以使用dom中的方法,但不能再使用Jquery的方法。
以下几种写法都是正确的:
$("#msg").html;
$("#msg")[0].innerHTML;
$("#msg").eq(0)[0].innerHTML;
$("#msg").get(0).innerHTML;
3、如何获取jQuery集合的某一项
对于获取的元素集合,获取其中的某一项(通过索引指定)可以使用eq或get(n)方法或者索引号获取,要注意,eq返回的是jquery对象,而get(n)和索引返回的是dom元素对象。对于jquery对象只能使用jquery的方法,而dom对象只能使用dom的方法,如要获取第三个
元素的内容。
有如下两种方法:
$("div").eq(2).html;//调用jquery对象的方法
$("div").get(2).innerHTML;//调用dom的方法属性
4、同一函数实现set和get
Jquery中的很多方法都是如此,主要包括如下几个:
·$("#msg").html;//返回id为msg的元素节点的html内容。
·$("#msg").html("newcontent");
·//将“newcontent”作为html串写入id为msg的元素节点内容中,页面显示粗体的newcontent
·$("#msg").text;//返回id为msg的元素节点的文本内容。
·$("#msg").text("newcontent");
·//将“newcontent”作为普通文本串写入id为msg的元素节点内容中,页面显示newcontent
·$("#msg").height;//返回id为msg的元素的高度
·$("#msg").height("300");//将id为msg的元素的高度设为300
·$("#msg").width;//返回id为msg的元素的宽度
·$("#msg").width("300");//将id为msg的元素的宽度设为300
·$("input").val(");//返回表单输入框的value值
·$("input").val("test");//将表单输入框的value值设为test
·$("#msg").click;//触发id为msg的元素的单击事件
·$("#msg").click(fn);//为id为msg的元素单击事件添加函数
·同样blur,focus,select,submit事件都可以有着两种调用方法
5、集合处理功能
·$.extend({
·min:function(a,b){returna
·max:function(a,b){returna>b?a:b;}
·});//为jquery扩展了min,max两个方法
·使用扩展的方法(通过“$.方法名”调用):
·alert("a=10,b=20,max="+$.max(10,20)+",min="+$.min(10,20));
6、支持方法的连写
所谓连写,即可以对一个jquery对象连续调用各种不同的方法。
例如:
$("p").click(function{alert($(this).html)})
.mouseover(function{alert('mouseoverevent')})
.each(function(i){this.style.color=['#f00','#0f0','#00f'][i]});
7、操作元素的样式
主要包括以下几种方式:
·$("#msg").css("background");//返回元素的背景颜色
·$("#msg").css("background","#ccc")//设定元素背景为灰色
·$("#msg").height(300);$("#msg").width("200");//设定宽高
·$("#msg").css({color:"red",background:"blue"});//以名值对的形式设定样式
·$("#msg").addClass("select");//为元素增加名称为select的class
·$("#msg").removeClass("select");//删除元素名称为select的class
·$("#msg").toggleClass("select");//如果存在(不存在)就删除(添加)名称为select的class
8、完善的事件处理功能
Jquery已经为我们提供了各种事件处理方法,我们无需在html元素上直接写事件,而可以直接为通过jquery获取的对象添加事件。
如:
$("#msg").click(function{alert("good")})//为元素添加了单击事件
$("p").click(function(i){this.style.color=['#f00','#0f0','#00f'][i]})
//为三个不同的p元素单击事件分别设定不同的处理
jQuery中几个自定义的事件:
(1)hover(fn1,fn2):一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法。当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。
//当鼠标放在表格的某行上时将class置为over,离开时置为out。
$("tr").hover(function{
$(this).addClass("over");
},
function{
$(this).addClass("out");
});
(2)ready(fn):当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。
$(document).ready(function{alert("LoadSuccess")})
//页面加载完毕提示“LoadSuccess”,相当于onload事件。与$(fn)等价
(3)toggle(evenFn,oddFn):每次点击时切换要调用的函数。如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。随后的每次点击都重复对这两个函数的轮番调用。
//每次点击时轮换添加和删除名为selected的class。
$("p").toggle(function{
$(this).addClass("selected");
},function{
$(this).removeClass("selected");
});
(4)trigger(eventtype):在每一个匹配的元素上触发某类事件。
例如:
$("p").trigger("click");//触发所有p元素的click事件
(5)bind(eventtype,fn),unbind(eventtype):事件的绑定与反绑定
从每一个匹配的元素中(添加)删除绑定的事件。
例如:
$("p").bind("click",function{alert($(this).text);});//为每个p元素添加单击事件
$("p").unbind;//删除所有p元素上的所有事件
$("p").unbind("click")//删除所有p元素上的单击事件
9、几个实用特效功能
其中toggle和slidetoggle方法提供了状态切换功能。
如toggle方法包括了hide和show方法。
slideToggle方法包括了slideDown和slideUp方法。
10、几个有用的jQuery方法
$.browser.浏览器类型:检测浏览器类型。有效参数:safari,
opera,msie,mozilla。如检测是否ie:$.browser.isie,是ie浏览器则返回true。
$.each(obj,fn):通用的迭代函数。可用于近似地迭代对象和数组(代替循环)。
如
$.each([0,1,2],function(i,n){alert("Item#"+i+":"+n);});
等价于:
vartempArr=[0,1,2];
for(vari=0;i
alert("Item#"+i+":"+tempArr[i]);
}
也可以处理json数据,如
$.each({name:"John",lang:"JS"},function(i,n){alert("Name:"+i+
",Value:"+n);});
结果为:
Name:name,Value:John
Name:lang,Value:JS
$.extend(target,prop1,propN):用一个或多个其他对象来扩展一个对象,返回这个被扩展的对象。这是jquery实现的继承方式。
如:
$.extend(settings,options);
//合并settings和options,并将合并结果返回settings中,相当于options继承setting并将继承结果保存在setting中。
varsettings=$.extend({},defaults,options);
//合并defaults和options,并将合并结果返回到setting中而不覆盖default内容。
可以有多个参数(合并多项并返回)
$.map(array,fn):数组映射。把一个数组中的项目(处理转换后)保存到到另一个新数组中,并返回生成的新数组。
如:
vartempArr=$.map([0,1,2],function(i){returni+4;});
tempArr内容为:[4,5,6]
vartempArr=$.map([0,1,2],function(i){returni>0?i+1:null;
});
tempArr内容为:[2,3]
$.merge(arr1,arr2):合并两个数组并删除其中重复的项目。
如:$.merge([0,1,2],[2,3,4])//返回[0,1,2,3,4]
$.trim(str):删除字符串两端的空白字符。
如:$.trim("hello,howareyou?");//返回"hello,howareyou?"
11、解决自定义方法或其他类库与jQuery的冲突
很多时候我们自己定义了$(id)方法来获取一个元素,或者其他的一些js类库如prototype也都定义了$方法,如果同时把这些内容放在一起就会引起变量方法定义冲突,Jquery对此专门提供了方法用于解决此问题。
使用jquery中的jQuery.noConflict;方法即可把变量$的控制权让渡给第一个实现它的那个库或之前自定义的$方法。之后应用Jquery的时候只要将所有的$换成jQuery即可,如原来引用对象方法$("#msg")改为jQuery("#msg")。
如:jQuery.noConflict;
//开始使用jQuery
jQuery("divp").hide;
//使用其他库的$
$("content").style.display='none'
以上就是小编今天为大家分享的关于Web前端初学者应该学习的jQuery技巧的文章,希望本篇文章能够对正在从事web前端学习的小伙伴们有所帮助。想要了解更多web前端相关知识记得关注北大青鸟web培训官网。最后祝愿小伙伴们工作顺利!