題目1: jQuery 能做什么?
選擇網(wǎng)頁元素
改變結(jié)果集
元素的操作:取值和賦值
元素的操作:移動
元素的操作:復(fù)制、刪除和創(chuàng)建
工具方法
事件操作
特殊效果
AJAX
http://devdocs.io/jquery/
題目2: jQuery 對象和 DOM 原生對象有什么區(qū)別?如何轉(zhuǎn)化?
-
聯(lián)系:
- jQuery對象:通過jQuery包裝DOM對象后產(chǎn)生的對象;
- 兩者之間可以相互轉(zhuǎn)換;
-
區(qū)別:
- jquery選擇器得到的jquery對象和標(biāo)準(zhǔn)的 javascript中的
document.getElementById()
取得的dom對象是兩種不同的對象類型,兩者不等價; - jQuery無法使用DOM對象的任何方法,同理DOM對象也不能使用jQuery里的方法. 亂使用會報錯。
- jquery選擇器得到的jquery對象和標(biāo)準(zhǔn)的 javascript中的
-
相互轉(zhuǎn)換:
-
jQuery對象轉(zhuǎn)成DOM對象
- jQuery對象是一個數(shù)據(jù)對象,通過
[index]
的方法
var $v = $("#v") // jQuery對象 var v = $v[0] // DOM對象
- jQuery本身提供,通過.get(index)方法
var $v = $("#v") // jQuery對象 var v = $v.get(0) // DOM對象
- jQuery對象是一個數(shù)據(jù)對象,通過
-
DOM對象轉(zhuǎn)成jQuery對象:
對于DOM對象,只需用$()把DOM對象包裝起來,就可得到j(luò)Query對象var v=document.getElementById("v") // DOM對象 var $v=$(v) // jQuery對象
-
題目3:jQuery中如何綁定事件?bind、unbind、delegate、live、on、off都有什么作用?推薦使用哪種?使用on綁定事件使用事件代理的寫法?
如何綁定事件
-
bind(type,[data],fn)
為每個匹配元素的特定事件綁定事件處理函數(shù)。
jQuery 3.0中已棄用此方法,請用on()
代替。- type: 含有一個或多個事件類型的字符串,由空格分隔多個事件。比如"click"或"submit",還可以是自定義事件名。
- data: 作為event.data屬性值傳遞給事件對象的額外數(shù)據(jù)對象
- fn: 綁定到每個匹配元素的事件上面的處理函數(shù)
-
unbind(type,[data|fn]])
bind()
的反向操作,從每一個匹配的元素中刪除綁定的事件。
jQuery 3.0中已棄用此方法,請用off()
代替。
如果沒有參數(shù),則刪除所有綁定的事件。
你可以將你用bind()
注冊的自定義事件取消綁定。
如果提供了事件類型作為參數(shù),則只刪除該類型的綁定事件。
如果把在綁定時傳遞的處理函數(shù)作為第二個參數(shù),則只有這個特定的事件處理函數(shù)會被刪除。- type: 刪除元素的一個或多個事件,由空格分隔多個事件值。
- fn: 要從每個匹配元素的事件中反綁定的事件處理函數(shù)
-
delegate(selector,[type],[data],fn)
指定的元素(屬于被選元素的子元素)添加一個或多個事件處理程序,并規(guī)定當(dāng)這些事件發(fā)生時運(yùn)行的函數(shù)。
jQuery 3.0中已棄用此方法,請用 on()代替。
使用 delegate() 方法的事件處理程序適用于當(dāng)前或未來的元素(比如由腳本創(chuàng)建的新元素)。- selector: 選擇器字符串,用于過濾器觸發(fā)事件的元素。
- type: 附加到元素的一個或多個事件。由空格分隔多個事件值。必須是有效的事件。
- data: 傳遞到函數(shù)的額外數(shù)據(jù)
- fn: 當(dāng)事件發(fā)生時運(yùn)行的函數(shù)
-
live(type, [data], fn)
jQuery 給所有匹配的元素附加一個事件處理函數(shù),即使這個元素是以后再添加進(jìn)來的也有效。
這個方法是基本是的.bind()
方法的一個變體。使用.bind()
時,選擇器匹配的元素會附加一個事件處理函數(shù),而以后再添加的元素則不會有。為此需要再使用一次.bind()
才行
從 jQuery 1.7 開始,不再建議使用.live()
方法。請使用.on()
來添加事件處理。使用舊版本的用戶,應(yīng)該優(yōu)先使用.delegate()
來替代.live()
。- type: 一個或多個事件類型,由空格分隔多個事件
- data: 傳遞給事件處理函數(shù)的附加參數(shù)
- fn: 要從每個匹配元素的事件中反綁定的事件處理函數(shù)
-
on(events,[selector],[data],fn)
在選擇元素上綁定一個或多個事件的事件處理函數(shù)。
on()
方法綁定事件處理程序到當(dāng)前選定的jQuery對象中的元素。在jQuery 1.7中,.on()
方法 提供綁定事件處理程序所需的所有功能。- events: 一個或多個用空格分隔的事件類型和可選的命名空間,如"click"或"keydown.myPlugin" 。
- selector: 一個選擇器字符串用于過濾器的觸發(fā)事件的選擇器元素的后代。如果選擇的< null或省略,當(dāng)它到達(dá)選定的元素,事件總是觸發(fā)。
- data: 當(dāng)一個事件被觸發(fā)時要傳遞event.data給事件處理函數(shù)。
- fn: 該事件被觸發(fā)時執(zhí)行的函數(shù)。 false 值也可以做一個函數(shù)的簡寫,返回false。
-
off(events,[selector],[fn])
在選擇元素上移除一個或多個事件的事件處理函數(shù)。- events: 一個或多個空格分隔的事件類型和可選的命名空間,或僅僅是命名空間,比如"click", "keydown.myPlugin", 或者 ".myPlugin".
- selector: 一個最初傳遞到.on()事件處理程序附加的選擇器。
- fn: 事件處理程序函數(shù)以前附加事件上,或特殊值false.
推薦使用哪種
推薦使用.on()
因為提供綁定事件處理程序所需的所有功能
使用on綁定事件使用事件代理的寫法
<ul>
<li></li>
<li></li>
<li></li>
</ul>
$('ul').on('click','li',function(){})
// 選擇父容器綁定事件,再在選擇器中選擇目標(biāo)元素
題目4:jQuery 如何展示/隱藏元素?
-
hide([speed,[easing],[fn]])
隱藏顯示的元素- speed: 三種預(yù)定速度之一的字符串("slow","normal", or "fast")或表示動畫時長的毫秒數(shù)值(如:1000)
- easing: (Optional) 用來指定切換效果,默認(rèn)是"swing",可用參數(shù)"linear"
- fn: 在動畫完成時執(zhí)行的函數(shù),每個元素執(zhí)行一次。
-
show(([speed,[easing],[fn]])
顯示隱藏的匹配元素。- speed: 三種預(yù)定速度之一的字符串("slow","normal", or "fast")或表示動畫時長的毫秒數(shù)值(如:1000)
- easing: (Optional) 用來指定切換效果,默認(rèn)是"swing",可用參數(shù)"linear"
- fn: 在動畫完成時執(zhí)行的函數(shù),每個元素執(zhí)行一次。
-
toggle([speed],[easing],[fn]
如果元素是可見的,切換為隱藏的;如果元素是隱藏的,切換為可見的。- speed: 隱藏/顯示 效果的速度。默認(rèn)是 "0"毫秒。可能的值:slow,normal,fast。"
- easing: (Optional) 用來指定切換效果,默認(rèn)是"swing",可用參數(shù)"linear"
- fn: 在動畫完成時執(zhí)行的函數(shù),每個元素執(zhí)行一次。
slideDown([speed],[easing],[fn])
通過高度變化(向下增大)來動態(tài)地顯示所有匹配的元素,在顯示完成后可選地觸發(fā)一個回調(diào)函數(shù)。slideUp([speed,[easing],[fn]])
通過高度變化(向上減小)來動態(tài)地隱藏所有匹配的元素,在隱藏完成后可選地觸發(fā)一個回調(diào)函數(shù)。slideToggle([speed],[easing],[fn])
通過高度變化來切換所有匹配元素的可見性,并在切換完成后可選地觸發(fā)一個回調(diào)函數(shù)。fadeIn([speed],[easing],[fn])
通過不透明度的變化來實現(xiàn)所有匹配元素的淡入效果,并在動畫完成后可選地觸發(fā)一個回調(diào)函數(shù)。fadeOut([speed],[easing],[fn])
通過不透明度的變化來實現(xiàn)所有匹配元素的淡出效果,并在動畫完成后可選地觸發(fā)一個回調(diào)函數(shù)。fadeToggle([speed,[easing],[fn]])
通過不透明度的變化來開關(guān)所有匹配元素的淡入和淡出效果,并在動畫完成后可選地觸發(fā)一個回調(diào)函數(shù)。-
fadeTo([[speed],opacity,[easing],[fn]])
- speed: 三種預(yù)定速度之一的字符串("slow","normal", or "fast")或表示動畫時長的毫秒數(shù)值(如:1000)
- opacity: 一個0至1之間表示透明度的數(shù)字。
- easing: (Optional) 用來指定切換效果,默認(rèn)是"swing",可用參數(shù)"linear"
- fn: 在動畫完成時執(zhí)行的函數(shù),每個元素執(zhí)行一次。
題目5: jQuery 動畫如何使用?
animate(params,[speed],[easing],[fn])
用于創(chuàng)建自定義動畫的函數(shù)。
這個函數(shù)的關(guān)鍵在于指定動畫形式及結(jié)果樣式屬性對象。這個對象中每個屬性都表示一個可以變化的樣式屬性(如height
、top
或opacity
)。注意:所有指定的屬性必須用駱駝形式,比如用marginLeft代替margin-left
而每個屬性的值表示這個樣式屬性到多少時動畫結(jié)束。如果是一個數(shù)值,樣式屬性就會從當(dāng)前的值漸變到指定的值。如果使用的是hide
、show
或toggle
這樣的字符串值,則會為該屬性調(diào)用默認(rèn)的動畫形式。
jQuery 1.2 中,你可以使用 em
和 %
單位
jQuery 1.2 中,你可以通過在屬性值前面指定+
或-
來讓元素做相對運(yùn)動
jQuery 1.3中,如果duration設(shè)為0則直接完成動畫。而在以前版本中則會執(zhí)行默認(rèn)動畫。
jQuery 1.8中,當(dāng)你使用CSS屬性在css()
或animate()
中,將根據(jù)瀏覽器自動加上前綴(在適當(dāng)?shù)臅r候),比如("user-select", "none");
在Chrome/Safari瀏覽器將設(shè)置為"-webkit-user-select"
, Firefox會使用"-moz-user-select"
, IE10將使用"-ms-user-select"
.
- 參數(shù)
- params: 一組包含作為動畫屬性和終值的樣式屬性和及其值的集合
- speed: 三種預(yù)定速度之一的字符串("slow","normal", or "fast")或表示動畫時長的毫秒數(shù)值(如:1000)
- easing: 要使用的擦除效果的名稱(需要插件支持).默認(rèn)jQuery提供"linear" 和 "swing".
- fn: 在動畫完成時執(zhí)行的函數(shù),每個元素執(zhí)行一次。
-
stop([clearQueue],[jumpToEnd])
停止所有在指定元素上正在運(yùn)行的動畫。
如果隊列中有等待執(zhí)行的動畫(并且clearQueue沒有設(shè)為true),他們將被馬上執(zhí)行- clearQueue: 如果設(shè)置成true,則清空隊列。可以立即結(jié)束動畫。
- gotoEnd: 讓當(dāng)前正在執(zhí)行的動畫立即完成,并且重設(shè)show和hide的原始樣式,調(diào)用回調(diào)函數(shù)等。
-
finish( [queue ] )
停止當(dāng)前正在運(yùn)行的動畫,刪除所有排隊的動畫,并完成匹配元素所有的動畫。
當(dāng).finish()在一個元素上被調(diào)用,立即停止當(dāng)前正在運(yùn)行的動畫和所有排隊的動畫(如果有的話),并且他們的CSS屬性設(shè)置為它們的目標(biāo)值(所有動畫的目標(biāo)值)。所有排隊的動畫將被刪除。- queue:停止動畫隊列中的名稱。
-
delay(duration,[queueName])
設(shè)置一個延時來推遲執(zhí)行隊列中之后的項目。- duration: 延時時間,單位:毫秒
- queueName: 隊列名詞,默認(rèn)是Fx,動畫隊列
題目6:如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容?如何設(shè)置和獲取元素內(nèi)部文本?
-
html([val|fn])
取得第一個匹配元素的html內(nèi)容。這個函數(shù)不能用于XML文檔。但可以用于XHTML文檔。
在一個 HTML 文檔中, 我們可以使用.html()
方法來獲取任意一個元素的內(nèi)容。 如果選擇器匹配多于一個的元素,那么只有第一個匹配元素的 HTML 內(nèi)容會被獲取。- val:用于設(shè)定HTML內(nèi)容的值
- fn:此函數(shù)返回一個HTML字符串。接受兩個參數(shù),index為元素在集合中的索引位置,html為原先的HTML值。
-
text([val|fn])
取得所有匹配元素的內(nèi)容。
結(jié)果是由所有匹配元素包含的文本內(nèi)容組合起來的文本。這個方法對HTML和XML文檔都有效。- val:用于設(shè)置元素內(nèi)容的文本
- fn:此函數(shù)返回一個字符串。接受兩個參數(shù),index為元素在集合中的索引位置,text為原先的text值
題目7:如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設(shè)置和獲取元素屬性?
-
val([val|fn|arr])
獲得匹配元素的當(dāng)前值。- val:要設(shè)置的值
- fn:此函數(shù)返回一個要設(shè)置的值。接受兩個參數(shù),index為元素在集合中的索引位置,text為原先的text值。
- arr:用于 check/select 的值
-
attr(name|properties|key,value|fn)
設(shè)置或返回被選元素的屬性值。- name:屬性名稱
- properties:作為屬性的“名/值對”對象
- key,value:屬性名稱,屬性值
- fn:返回屬性值的函數(shù),第一個參數(shù)為當(dāng)前元素的索引值,第二個參數(shù)為原先的屬性值。
-
removeAttr(name)
從每一個匹配的元素中刪除一個屬性- name:要刪除的屬性名
-
css(name|pro|[,val|fn])
訪問匹配元素的樣式屬性。- name:一個或多個CSS屬性組成的一個數(shù)組
- pro:要設(shè)置為樣式屬性的名/值對
- val:屬性名
- fn:此函數(shù)返回要設(shè)置的屬性值。接受兩個參數(shù),index為元素在對象集合中的索引位置,value是原先的屬性值。