一、說說庫和框架的區(qū)別?
- 庫( Library):庫試講代碼集合成的一個產(chǎn)品,供程序員調(diào)用。面對對象的代碼組織形式而成的庫也叫類庫。面向過程的代碼組織形式而成的庫也叫函數(shù)庫。
在函數(shù)庫中的可以直接使用的函數(shù)叫庫函數(shù)。開發(fā)者在使用庫的時候,只需要使用庫的一部分類或函數(shù),然后繼續(xù)實現(xiàn)自己的功能。 - 框架(framework):框架則是為解決一個(一類)問題而開發(fā)的產(chǎn)品,框架用戶一般只需要使用框架提供的類或函數(shù),就可以實現(xiàn)全部功能。可以說,框架是庫的升級版。
開發(fā)者在使用框架的時候,必須使用這個框架的全部代碼。 - 框架和庫的比較可以想像為:
假如我們要買一臺電腦??蚣転槲覀兲峁┝艘呀?jīng)裝好的電腦,我們只要買回來就能用,但你必須把整個電腦買回來。這樣用戶自然輕松許多,但會導致很多人用一樣的電腦,或你想自定義某個部件將需要修改這個框架。
而庫就如自己組裝的電腦。庫為我們提供了很多部件,我們需要自己組裝,如果某個部件庫未提供,我們也可以自己做。庫的使用非常靈活,但沒有框架方便。 - 框架與類庫的區(qū)別主要表現(xiàn)在以下幾個方面:
(1)從結構上說,框架內(nèi)部是高內(nèi)聚的,而庫內(nèi)部是相對松散的。
(2)框架封裝了處理流程的控制邏輯,而庫幾乎不涉及任何處理流程和控制邏輯。
(3)框架具有控制反轉(zhuǎn)能力,而庫沒有。對于庫中的元素來說,通常是由我們的應用來調(diào)用它;而框架在適當?shù)臅r候會自己調(diào)用我們應用中的邏輯。
(4)框架專注于特定的領域,而庫更通用的。
二、jquery能做什么?
-
jquery是一個快速、簡潔和功能豐富的JavaScript庫。它封裝JavaScript常用的功能代碼,提供一種簡便的JavaScript設計模式,優(yōu)化HTML文檔操作、事件處理、動畫設計和Ajax交互。 -
jQuery通常能為我們提供以下功能:
1、方便快捷獲取DOM元素。例如:找到所有以div中應用了.contentclass樣式的p標簽。
$('.content').find('p');
2、修改頁面樣式。即使是在css頁面呈現(xiàn)之后,jQuery仍能改變文檔中某個部分的類或者個別的樣式屬性。例如:找到頁面所有的ul標簽的第一個li子標簽,然后為它們增加名為active的樣式.
$('ul>li:first').addClass('active');
3、改變文檔的內(nèi)容??梢愿淖兾谋?、插入或翻轉(zhuǎn)圖像、列表重新排序,甚至對HTML文檔的整個結構都能重寫和擴充。例如:為ID為container的元素添加一個連接。
$('#container').append('<a href="more.html">more</a>');
4、響應用戶的交互操作。jquery提供了截獲形形色色的頁面事件(比如用戶單擊某個鏈接)的適當方式,而不需要使用事件處理程序拆散HTML代碼。例如:為使用的.show-details樣式的button元素添加一個click事件,事件就是:顯示使用.details樣式的DIV。
$('button.show-details').click(function() {
$('div.details').show();
});
5、為頁面添加動態(tài)效果。
$('div.details').slideDown();
6、簡化常見的JavaScript任務。除了這些完全針對文檔的特性之外,jQuery也改進了對基本的JavaScript數(shù)據(jù)結構(例如迭代和數(shù)組操作等)。
$.each(obj, function(key, value) {
total += value;
});
7、統(tǒng)一Ajax操作。jQuery統(tǒng)一了多種瀏覽器的Ajax操作,使得開發(fā)人員更多的專注服務器端開發(fā)。
三、jquery對象和DOM原生對象有什么區(qū)別?如何轉(zhuǎn)化?
-
DOM原生對象和jquery對象的區(qū)別:
1.js獲取的dom是一個對象,jquery對象就是一個偽數(shù)組對象,是選擇出來元素的數(shù)組集合。
jquery選擇器得到的jquery對象和標準的JavaScript中的document.getElementByld()取得的dom對象是兩種不同的對象類型,兩者不等價。
2.jquery無法使用DOM對象的任何方法,同理DOM對象也不能使用jquery里的方法。 - 相互 轉(zhuǎn)換:
1.jquery對象轉(zhuǎn)換為原生DOM對象
var $li = $('li'); //jquery對象
var li = $li[0]; //DOM對象
var $div = $('div'); //jquery對象
var div = $div.get(0); //DOM對象
2.DOM對象轉(zhuǎn)換成jquery對象
對于DOM對象,只需用$()把DOM對象包裝起來,就可得到jQuery對象。
var li = document.getElementByid('li'); //DOM對象
var $li = $(li); //jquery 對象
四、jquery中如何綁定事件?bind、unbind、delegate、live、on、off都有什么作用?推薦使用哪種?使用on綁定事件代理的寫法?
-
jquery綁定事件的方法有: bind()、live()、delegate()、on()。解除綁定的方法有:unbind()、die()、undelegate()、off()`。 -
bind()、live()、delegate()逐漸被on()替代。unbind()、die()、undelegate()逐漸被off()代替。off()、on()方法給api帶來更多的便利。推薦使用該方法。 -
on()方法在被選元素及子元素上添加一個或多個事件處理程序。
$('.child').on('click',function(){
console.log('ok')
}) //監(jiān)聽子元素
$('.parent').on('click','.child',function(){
console.log('ok')
}) //監(jiān)聽父元素
-
off()移除事件處理程序。
$('.parent').off('click');
五、jquery如何展示/隱藏元素?
基本的展示和隱藏元素
- 隱藏:
.hide([duration ] [,easing ] [,complete ])用于隱藏元素,沒有參數(shù)的時候等同于直接設置display屬性。例如:
$('.target').hide(); //等價于 $('.target').css('display', 'none')
$('#book').hide(300, 'linear', function() {
alert('Animation complete.');
}) // 300秒之內(nèi)緩慢的沿直線的形式消失并彈出一個對話框
- 展示:
.show( [duration ] [, easing ] [, complete ] )用法與hide類似。 - 隱藏、展示切換:
.toggle( [duration ] [, easing ] [, complete ] )用來切換元素的隱藏、顯示,類似于toggleClass,用法和show、hide類似。
其中參數(shù)的意義:
duration:動畫持續(xù)多久;
easing:過渡使用哪種緩動函數(shù),jQuery自身提供"linear"和"swing";
complete:在動畫完成時執(zhí)行的函數(shù)。
漸變式展示和隱藏
- 漸入方式展示:
.fadeIn( [duration ] [, easing ] [, complete ] ) - 漸出方式隱藏:
.fadeOut( [duration ] [, easing ] [, complete ] )
調(diào)整匹配元素的透明度:.fadeTo( duration, opacity [, easing ] [, complete ] ) - 漸入和漸出間的切換:
.fadeToggle( [duration ] [, easing ] [, complete ] )通過匹配元素的不透明度動畫,來顯示或隱藏它們,方法執(zhí)行匹配元素的不透明度動畫。元素不透明度一旦達到0,display樣式屬性設置為none。
其中參數(shù)的意義和上一條中相同。例如:
$("button:first").click(function() {
$("p:first").fadeToggle("slow", "linear");
});
滑動式展示和隱藏
- 下滑方式展示:
.slideDown( [duration ] [, easing ] [, complete ] ) - 上滑方式隱藏:
.slideUp( [duration ] [, easing ] [, complete ] ) - 下滑和上滑間的切換:
.slideToggle( [duration ] [, easing ] [, complete ] )
其中參數(shù)的意義和上一條中相同。
$('#book').slideDown('slow', function() {
//Animation complete.
});
六、jquery動畫如何使用?
- 上面幾個簡單的動畫不能滿足需求的時候,
jquery提供了自定義動畫行為的方法: -
.animate( properties [, duration ] [, easing ] [, complete ] )
參數(shù)意義:
properties:一個CSS屬性和值的對象,動畫將根據(jù)這組對象移動。
例1
例2
參考 -
.clearQueue
清除動畫隊列中未執(zhí)行的動畫。 -
.finish
停止當前動畫,并清除動畫隊列中所有未完成的動畫,最終展示動畫隊列最后一幀的最終狀態(tài)。 -
.stop( [clearQueue ] [, jumpToEnd ] )
停止當前正在運行的動畫。
參數(shù)意義:
clearQueue(default: false)
jumpToEnd(default: false)
七、如何設置和獲取元素內(nèi)部html內(nèi)容?如何設置和獲取元素內(nèi)部的文本?
$('div').html('abc'); //設置元素內(nèi)部HTML內(nèi)容為"abc"
$('div').html(); //獲取元素內(nèi)部HTML內(nèi)容
$('div').text('abc'); //設置元素內(nèi)部文本為"abc"
$('div').text(); //獲取元素內(nèi)部文本
八、如何設置和獲取表單用戶輸入或者選擇的內(nèi)容?如何設置和獲取元素的屬性?
$('input').val('abc'); //設置表單用戶輸入或者選擇的內(nèi)容為"abc"
$('input').val(); //獲取表單用戶輸入或者選擇的內(nèi)容
$('div').attr('class','abc'); //設置元素的class屬性為"abc"
$('div').attr('class'); //獲取元素的class屬性