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