1. Jquery 中, $(document).ready()是什么意思?和window.onload 的區(qū)別? 還有其他什么寫法或者替代方法?
$(document).ready()可以傳遞函數(shù)給.ready(),當(dāng)DOM準(zhǔn)備就緒的時候,執(zhí)行傳遞的函數(shù)。因為有時執(zhí)行的代碼需要在元素被加載之后才能使用,(例如,取得圖片的大小需要在圖片被加載完后才能知道),就需要將這樣的代碼放到 load 事件中。
用法:
$(document).ready(handler)
還可以寫成這樣:$(handler),如:
$(function(){
console.log('ready');
});
window.onload是原生js中的一個事件,可以綁定事件處理函數(shù),其作用也是使得事件加載完成之后才出發(fā)事件,執(zhí)行事件處理函數(shù)。事件處理函數(shù)的綁定方式有:
window.onload=function(){}
window.addEventListener("load",handler,false);
2. $node.html()和$node.text()的區(qū)別?
.html()用于獲取元素里面的html內(nèi)容,包括html標(biāo)簽和文本;.text()用于獲取只元素中的文本,如果元素中含有多個元素,則返回每個元素中的文本。

3. $.extend 的作用和用法?
$.extend()的作用是可以合并多個對象,
如:
var obj= $.extend( object1, object2,object3 );
//此代碼將后面兩個對象object2和object3的所有屬性都添加到object1,后面的覆蓋前面的,且會更改目標(biāo)對象object1。淺拷貝,不遞歸。obj===object1
var obj= $.extend( {},object1, object2,object3 );
//此段代碼將后面三個對象的屬性都添加到第一個空對象中,不會更改后面的三個對象,而是組成了一個新對象。obj !== object1
var obj= $.extend( true,{},object1, object2,object3 );
//此段代碼在最前面加上true,會采用遞歸的方式進(jìn)行添加拷貝,(對象中又包裹對象時會逐個添加每個屬性及其對應(yīng)的值。),且不會更改object1.
例1(修改第一個對象,淺拷貝):
<div id="log"></div>
<script>
var object1 = {apple: 0,banana: { weight: 52, price: 100 },cherry: 97};
var object2 = {banana: { price: 200 },durian: 100};
// Merge object2 into object1
$.extend( object1, object2 );
// Assuming JSON.stringify - not available in IE<8
$( "#log" ).append( JSON.stringify( object1 ) );
</script>
結(jié)果:{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}
例2(不修改第一個對象,深拷貝):
<div id="log1"></div>
<div id="log"></div>
<script>
var object1 = {apple: 0,banana: { weight: 52, price: 100 },cherry: 97};
var object2 = {banana: { price: 200 },durian: 100};
var obj = $.extend( true, {}, object1, object2 );
$( "#log1" ).append( JSON.stringify( object1 ) );
$( "#log" ).append( JSON.stringify( obj ) );
</script>
結(jié)果:
{"apple":0,"banana":{"weight":52,"price":100},"cherry":97}
{"apple":0,"banana":{"weight":52,"price":200},"cherry":97,"durian":100}
4. JQuery 的鏈?zhǔn)秸{(diào)用是什么?
像這樣一段代碼:
$("#btn").css("color","red").attr("href","#");
就是jQuery的方法鏈。鏈?zhǔn)秸{(diào)用的優(yōu)點是:
- 讓調(diào)用過程更接近自然語言。
- 把原本參數(shù)列表復(fù)雜的方法化作多個參數(shù)列表簡單的方法來使用。
- 減少不必要的代碼量。
5. JQuery ajax 中緩存怎樣控制?
用參數(shù)cache控制。
cache: 是否開啟緩存,默認(rèn)為true開啟。設(shè)置為false則是關(guān)閉自動緩存。
瀏覽器自動緩存可以直接在本地緩存中查找文件,減少向服務(wù)器請求的次數(shù),提高處理速度,但是有些情況下我們不需要其緩存,因為可能無法得到最新的數(shù)據(jù),比如‘天氣’、‘路況’等信息,當(dāng)我們向瀏覽器請求是需要得到實時的最新數(shù)據(jù),而不是以前緩存在本地的數(shù)據(jù),這種情況可以關(guān)閉緩存。
另一種做法是在請求地址后面添加參數(shù),如:
<script src='abc.js?v=1'></script>
更改了文件第二次上線時可以直接更改地址后面的參數(shù)值,<script src='abc.js?v=2'></script>,由于src不同了,所以瀏覽器不會再用本地緩存,會重新發(fā)送請求,從而拿到最新的abc.js文件。
6. jquery 中 data 函數(shù)的作用
.data()用于在匹配元素上存儲任意相關(guān)數(shù)據(jù) 或 返回匹配的元素集合中的第一個元素的給定名稱的數(shù)據(jù)存儲的值。
$("body").data("foo", 52);
$("body").data("bar", { myType: "test", count: 40 });
$("body").data({ baz: [ 1, 2, 3 ] });
$("body").data("foo"); // 52
$("body").data(); // { foo: 52, bar: { myType: "test", count: 40 }, baz: [ 1, 2, 3 ] }