『壹』 完全理解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培訓官網。最後祝願小夥伴們工作順利!