題目1: jQuery 能做什么?
jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之后又一個優(yōu)秀的JavaScript代碼庫(或JavaScript框架)。jQuery設(shè)計(jì)的宗旨是“write Less,Do More”,即倡導(dǎo)寫更少的代碼,做更多的事情。它封裝JavaScript常用的功能代碼,提供一種簡便的JavaScript設(shè)計(jì)模式,優(yōu)化HTML文檔操作、事件處理、動畫設(shè)計(jì)和Ajax交互。
jQuery的核心特性可以總結(jié)為:具有獨(dú)特的鏈?zhǔn)秸Z法和短小清晰的多功能接口;具有高效靈活的css選擇器,并且可對CSS選擇器進(jìn)行擴(kuò)展;擁有便捷的插件擴(kuò)展機(jī)制和豐富的插件。
題目2: jQuery 對象和 DOM 原生對象有什么區(qū)別?如何轉(zhuǎn)化?
由于jQuery $封裝的方法返回的是一個類數(shù)組對象,所以jQuery對象只能用jQuery封裝的方法,不能用原生對象的方法,如果要用原生對象的方法,必須把jQuery對象轉(zhuǎn)換為原生對象。DOM原生對象同理。
如何轉(zhuǎn)換: jQuery => DOM 原生對象
$('div').[0] // 選取返回的類數(shù)組對象的具體下標(biāo)
DOM =>jQuery原生對象
$(document.querySelector('div')) //用$包裹住
題目3:jQuery中如何綁定事件?bind、unbind、delegate、live、on、off都有什么作用?推薦使用哪種?使用on綁定事件使用事件代理的寫法?
在jQuery3.0中,可以用on來綁定事件,off來解除綁定(也建議用這種方式,其余的已不推薦使用或者廢棄)
$('div').on('click',function(){...}) //最基本的用法
根據(jù)jQuery3.0版本:
1.bind
綁定事件
.bind( eventType [, eventData ], handler(eventObject) )
eventType
類型: String
一個包含一個或多個DOM事件類型的字符串,比如"click"或"submit,"或自定義事件的名稱。
eventData
類型: Anything
一個對象,它包含的數(shù)據(jù)鍵值對映射將被傳遞給事件處理程序。
handler(eventObject)
類型: Function()
每當(dāng)事件觸發(fā)時執(zhí)行的函數(shù)。
.bind()一個基本的用法:
$('#foo').bind('click', function() {
alert('User clicked on "foo."');
});
2.unbind
.unbind( eventType [, handler ] )
eventType
類型: String
一個包含一個或多個 DOM 事件類型的字符串,比如 "click" 或 "submit," 或自定義的事件名。
handler
類型: Function( Event eventObject )
這個函數(shù)今后不在執(zhí)行。
unbind() 可以解除元素綁定的事件,最簡單的方法是:
$('div').unbind(); //解除元素所有的綁定事件
3.delegate()
.delegate( selector, eventType, handler(eventObject)
描述: 為所有匹配選擇器(selector參數(shù))的元素綁定一個或多個事件處理函數(shù),基于一個指定的根元素的子集,匹配的元素包括那些目前已經(jīng)匹配到的元素,也包括那些今后可能匹配到的元素。
添加的版本: 1.4.2.delegate( selector, eventType, handler(eventObject) )
selector
類型: String
選擇器字符串,用于過濾器觸發(fā)事件的元素。
eventType
類型: String
一個包含一個或多個用空格隔開的JavaScript事件類型的字符串,比如"click"或"keydown,"或自定義事件的名稱。
handler(eventObject)
類型: Function()
每當(dāng)事件觸發(fā)時執(zhí)行的函數(shù)。
4.live()
描述: 附加一個事件處理器到匹配目前選擇器的所有元素,現(xiàn)在和未來。
添加的版本: 1.3.live( events, handler(eventObject) )
events
類型: String
一個包含一個JavaScript事件類型的字符串,比如"click"或"keydown,"或自定義事件的名稱。從jQuery 1.4開始,字符串可以包含多個空格分隔的事件類型或自定義事件的名稱。
handler(eventObject)
類型: Function()
每當(dāng)事件觸發(fā)時執(zhí)行的函數(shù)。
5.on()
綁定事件
.on( events [, selector ] [, data ], handler(eventObject) )
events
類型: String
一個或多個空格分隔的事件類型和可選的命名空間,或僅僅是命名空間,比如"click", "keydown.myPlugin", 或者 ".myPlugin"。
selector
類型: String
一個選擇器字符串,用于過濾出被選中的元素中能觸發(fā)事件的后代元素。如果選擇器是 null
或者忽略了該選擇器,那么被選中的元素總是能觸發(fā)事件。
data
類型: Anything
當(dāng)一個事件被觸發(fā)時,要傳遞給事件處理函數(shù)的event.data
。
handler(eventObject)
類型: Function()
事件被觸發(fā)時,執(zhí)行的函數(shù)。若該函數(shù)只是要執(zhí)行return false的話,那么該參數(shù)位置可以直接簡寫成 false。
形式
$('div').on('click',function(){...}) //最基本的用法
$('div').on('click','div后代元素',data,function(){...})
6.off
events
類型: String
一個或多個空格分隔的事件類型和可選的命名空間,或僅僅是命名空間,比如"click", "keydown.myPlugin", 或者 ".myPlugin"。
selector
類型: String
一個選擇器,當(dāng)綁定事件處理程序時匹配最初傳遞給 .on()
的那個。
handler
類型: Function( Event eventObject )
以前附加的事件處理函數(shù),或特殊值false
用來解除on綁定事件
建議使用on off 來綁定和解除綁定事件
關(guān)于on 事件代理的寫法
$('div').on('click','div要綁定的后代元素',data,function(){...})
題目4:jQuery 如何展示/隱藏元素?
jQuery 可以用以下幾種方式來展示/隱藏元素
.show() 來展示元素
.hide()來隱藏元素
.css("display","none");
.css("display","block");
.addClass()
.removeClass()
題目5: jQuery 動畫如何使用?
jQuery提供了如下API來實(shí)現(xiàn)動畫效果
1.基礎(chǔ)
.show() //顯示
.hide() //隱藏
.toggle() //切換
2.提供了四種漸變方法和三種滑動方法
漸變
.fadeIn()
.fadeOut()
.fadeTo()
.fadeToggle()
滑動
.slideDown()
.slideToggle()
.slideUp()
3.自定義方法
.animate()
.clearQueue()
.delay()
.dequeue()
jQuery.dequeue()
.finish()
jQuery.fx.interval
jQuery.fx.off
.queue()
jQuery.queue()
.stop() //停止匹配元素當(dāng)前正在運(yùn)行的動畫,finish()停止所有動畫,刪除動畫隊(duì)列
一般情況 可以傳遞以下參數(shù)
1.duration
控制動畫時間 默認(rèn)normal 還有fast slow
2.easing
一個字符串,表示過渡使用哪種緩動函數(shù)。(jQuery自身提供"linear" 和 "swing")
3.queue
一個布爾值,指示是否將動畫放置在效果隊(duì)列中。如果為false時,將立即開始動畫。 從jQuery1.7開始,隊(duì)列選項(xiàng)也可以接受一個字符串,在這種情況下,在動畫被添加到由該字符串表示的隊(duì)列中。當(dāng)一個自定義的隊(duì)列名稱被使用,動畫不會自動啟動;你必須調(diào)用.dequeue("queuename")來啟動它。
4.specialEasing
Type: PlainObject
由此方法的第一個參數(shù)properties定義的一個或多個CSS屬性,及其相應(yīng)的緩動函數(shù)組成的鍵值對map。( 1.4 新增)
5.complete
Type: Function()
在動畫完成時執(zhí)行的函數(shù)。
舉例
$('div').show(2000,linear,function(){...})
注意:.animate()方法允許我們在任意的數(shù)值的CSS屬性上創(chuàng)建動畫。唯一必要的屬性就是一組CSS屬性鍵值對。這組屬性和用于設(shè)置.css()方法的屬性鍵值對類似,除了屬性范圍做了更多限制。
題目6:如何設(shè)置和獲取元素內(nèi)部 HTML 內(nèi)容?如何設(shè)置和獲取元素內(nèi)部文本?
$('div').html()
$('div').html('<p>11</p>') //用html()方法獲取元素內(nèi)部html內(nèi)容,傳入值可以設(shè)置html內(nèi)容
$('div').text()
$('div').text('11') //用text()方法獲取內(nèi)部文本內(nèi)容,傳入值可以設(shè)置文本內(nèi)容
題目7:如何設(shè)置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設(shè)置和獲取元素屬性?
$('div').val() //獲取元素當(dāng)前值的內(nèi)容
$('div').val('123') //設(shè)置當(dāng)前值的內(nèi)容
$('div').attr('id') //獲取元素id屬性
$('div').attr('id','one') //設(shè)置元素id屬性