題目1: 說說庫和框架的區(qū)別镐侯?
庫的英語為 Library ( 簡寫 Lib ),框架的英語為 Framework驶冒。
庫是將代碼集合成的一個(gè)產(chǎn)品苟翻,供程序員調(diào)用。面向?qū)ο蟮拇a組織形式而成的庫也叫類庫骗污。面向過程的代碼組織形式而成的庫也叫函數(shù)庫崇猫。
在函數(shù)庫中的可直接使用的函數(shù)叫庫函數(shù)。開發(fā)者在使用庫的時(shí)候需忿,只需要使用庫的一部分類或函數(shù)诅炉,然后繼續(xù)實(shí)現(xiàn)自己的功能。
框架則是為解決一個(gè)(一類)問題而開發(fā)的產(chǎn)品屋厘,框架用戶一般只需要使用框架提供的類或函數(shù)涕烧,即可實(shí)現(xiàn)全部功能『谷鳎可以說议纯,框架是庫的升級(jí)版。
開發(fā)者在使用框架的時(shí)候溢谤,必須使用這個(gè)框架的全部代碼瞻凤。
框架和庫的比較可以想像為:
假如我們要買一臺(tái)電腦憨攒。框架為我們提供了已經(jīng)裝好的電腦阀参,我們只要買回來就能用肝集,但你必須把整個(gè)電腦買回來。這樣用戶自然輕松許多蛛壳,但會(huì)導(dǎo)致
很多人用一樣的電腦杏瞻,或你想自定義某個(gè)部件將需要修改這個(gè)框架。而庫就如自己組裝的電腦炕吸。庫為我們提供了很多部件伐憾,我們需要自己組裝勉痴,如果某個(gè)部件
庫未提供赫模,我們也可以自己做。庫的使用非常靈活蒸矛,但沒有框架方便瀑罗。
題目2: jquery 能做什么?
封裝部分JavaScript代碼雏掠,API友好斩祭。
$(“css選擇器”) 代替了 document.getElementsByTagName(“”)、document.getElementById(“”)…
$(“css選擇器”).css(“color”,”red”) 代替了 document.getElementById(“”).style.color = “red”乡话。
$(“css選擇器”).text(“”) 一個(gè)api同時(shí)具有讀跟寫的功能摧玫。($(“div”).text(“你好嗎”);)。
$(“css選擇器”).on(“click”,function (){}),監(jiān)聽事件绑青。
題目3: jquery 對(duì)象和 DOM 原生對(duì)象有什么區(qū)別诬像?如何轉(zhuǎn)化?
DOM原生對(duì)象:w3c標(biāo)準(zhǔn)用于操作文檔的API.
jQuery對(duì)象:包裝DOM對(duì)象產(chǎn)生的對(duì)象闸婴。
區(qū)別:DOM原生對(duì)象使用DOM原生對(duì)象的方法坏挠,jQuery對(duì)象使用jQuery對(duì)象的方法。
轉(zhuǎn)化:
DOM原生對(duì)象轉(zhuǎn)化為jQuery對(duì)象:$div = $(document.getElementsByTagName(‘div’));
jQuery對(duì)象轉(zhuǎn)化為DOM原生對(duì)象:div = $div[index];
題目4:jquery中如何綁定事件邪乍?bind降狠、unbind、delegate庇楞、live榜配、on、off都有什么作用吕晌?推薦使用哪種蛋褥?使用on綁定事件使用事件代理的寫法?
$(".className").on('eventType',function(){dosth...})//jquery通過on來綁定事件
bind和unbind是較早版本的jquery的語法聂使,現(xiàn)在已經(jīng)不推薦使用
$('.classname').bind('click',function(){
console.log($(this).html())//在控制臺(tái)打印點(diǎn)擊元素的innerHTML值壁拉。
})
unbind是bind的反向操作
$('.classname').unbind()//取消綁定在選定元素的所有事件
$('.classname').unbind('click')//取消綁定在選定元素的單擊事件
delegate谬俄,給選定元素的子元素綁定事件,使用 delegate() 方法的事件處理程
序適用于當(dāng)前或未來的元素(比如由腳本創(chuàng)建的新元素)弃理。
$('.parentname').delegate('.childname','click',function(){
dosth...
})
.live()事件委托
.live() 方法能對(duì)一個(gè)還沒有添加進(jìn)DOM的元素有效溃论,是由于使用了事件委托:
綁定在祖先元素上的事件處理函數(shù)可以對(duì)在后代上觸發(fā)的事件作出回應(yīng)。傳遞
給 .live() 的事件處理函數(shù)不會(huì)綁定在元素上痘昌,而是把他作為一個(gè)特殊的事件處
理函數(shù)钥勋,綁定在 DOM 樹的根節(jié)點(diǎn)上
比如:
$('.classname').live('click',function(){
dosth...
})
加入執(zhí)行完以后,又有新的匹配.classname的元素添加進(jìn)dom中的話辆苔,對(duì)其也會(huì)動(dòng)態(tài)的綁定click事件
無論是bind和unbind還是delegate或者live算灸,現(xiàn)在一次性全部可以通過.on()的方
式去實(shí)現(xiàn),所以上述四個(gè)方法已經(jīng)很少使用
.off()是.on()的反向操作驻啤,用來移除通過on綁定的事件
通過.on()綁定事件代理的寫法是通過delegate變換而來
$('.classname').on('click','.childname',function(){//參數(shù)中多一個(gè)子元素就可以
dosth...
})
題目5:jquery 如何展示/隱藏元素菲驴?
$('.classname').show(speed,callback)//展示選中的元素,speed可以控制元素從無到有的過度時(shí)間,callback是元素完全展示后的回調(diào)函數(shù)
$('.classname').hide(speed,callback)//隱藏選中的元素
題目6: jquery 動(dòng)畫如何使用骑冗?
語法:$(selector).animate({params},speed,callback);
題目7:如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容赊瞬?如何設(shè)置和獲取元素內(nèi)部文本?
$('.classname').html()//不加參數(shù)即可獲取內(nèi)部html內(nèi)容
$('.classname').html('我是改變后的html內(nèi)容')//加參數(shù)即可設(shè)置內(nèi)部html內(nèi)容
$('.classname').text()//不加參數(shù)即可獲取內(nèi)部文本
$('.classname').text('我是改變后的文本內(nèi)容')//加參數(shù)即可設(shè)置內(nèi)部文本
題目8:如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容贼涩?如何設(shè)置和獲取元素屬性巧涧?
$(selectorOfFormData).val()//不加參數(shù)即可獲取用戶輸入或選擇的內(nèi)容
$(selectorOfFormData).val(modifiedVal)//加參數(shù)即可設(shè)置用戶輸入或選擇的內(nèi)容
$(selector).attr(attributeName)//傳入元素屬性名即可獲取元素的屬性值
$(selector).attr(attributeName,attributeVal)//傳入元素屬性名和要設(shè)置的屬性值
即可完成對(duì)元素的屬性設(shè)置