1、在jQuery 中量没, $(document).ready()
是什么意思玉转?和window.onload
的區(qū)別? 還有其他什么寫法或者替代方法殴蹄?
因?yàn)闉g覽器從上至下解析頁(yè)面究抓,假若將<script>
寫在<head>
中,而頁(yè)面解析時(shí)間過長(zhǎng)袭灯,可能會(huì)出現(xiàn)事件關(guān)聯(lián)的DOM節(jié)點(diǎn)并未加載出而卻在<script>中進(jìn)行了事件綁定的bug刺下。使用$(document).ready()
,讓函數(shù)內(nèi)執(zhí)行的進(jìn)程等帶所有DOM加載完畢后在生效稽荧。
其與window.onload
的不同主要體現(xiàn)在:
-
$(document).ready()
是在DOM樹建立后生效橘茉,而window.onload
不僅要建立DOM樹,還要等待DOM數(shù)中的內(nèi)容加載完成(如:圖片姨丈,動(dòng)畫等等)畅卓; -
window.onload
只能規(guī)定一次,若多次規(guī)定蟋恬,則只有最后一個(gè)生效翁潘;而$(document).ready()
可規(guī)定多個(gè)。
其它寫法:
$(function(){
console.log("方法一");
})
$(document(){
console.log("方法二");
})
$().ready(function{
console.log("方法三");
})
2歼争、$node.html()
和$node.text()
的區(qū)別?
-
$node.html()
是獲取/修改$node節(jié)點(diǎn)中的html內(nèi)容拜马; -
$node.text()
是獲取/修改$node節(jié)點(diǎn)中的文本內(nèi)容;
3沐绒、$.extend
的作用和用法?
-
$.extend(obj1,obj2,[obj3]......)
的作用是將一個(gè)或多個(gè)對(duì)象整合到一個(gè)已經(jīng)存在的對(duì)象之中俩莽; - 前兩個(gè)參數(shù)必須傳入,后面3-n個(gè)參數(shù)可以選擇傳入 洒沦。
例如:
var student1 = {"name":"張全蛋","age":18}
var student2 = {"name":"王尼瑪","age":20,"gender":"男"}
var student3 = {"name":"狗子","age":24,"hobby":"足球"}
$.extend(student1,student2,student3); //Object {name: "狗子", age: 24, gender: "男", hobby: "足球"}
student1 //Object {name: "狗子", age: 24, gender: "男", hobby: "足球"}
//此時(shí)student1也變?yōu)樾碌膶?duì)象
4豹绪、什么是jQuery的鏈?zhǔn)秸{(diào)用价淌?
形如$(node).dosomething().dosomething()的形式即為鏈?zhǔn)秸{(diào)用申眼;其原理是每次執(zhí)行一次操作后瞒津,所得到的返回值依然是原來的jQuery對(duì)象,故可以繼續(xù)作用括尸;我們?cè)跁鴮懙臅r(shí)候巷蚪,為了簡(jiǎn)潔美觀一般是這樣:
$(node).dosomething()
.dosomething();
5、 JQuery Ajax 中緩存怎樣控制?
首先解釋什么是緩存:簡(jiǎn)單來說濒翻,緩存就是客戶端對(duì)上一次服務(wù)端響應(yīng)所留下的副本屁柏,如果下一次請(qǐng)求與上一次的URL相同,那么客戶端不會(huì)再向服務(wù)端發(fā)送請(qǐng)求有送,而直接調(diào)用緩存來呈現(xiàn)給用戶淌喻。
在JQuery的AJAX中,通過設(shè)置ajax對(duì)象內(nèi)部的cache
屬性來控制是否保存緩存:
cache
的值為布爾數(shù)雀摘,默認(rèn)值為true
裸删,意為保存緩存,反之則為false
阵赠,其不保存緩存的原理是將每次請(qǐng)求的URL地址后添加一個(gè)時(shí)間戳涯塔,以區(qū)分每次請(qǐng)求的URL。
6清蚀、jquery 中 data 的作用
.data() 方法允許我們?cè)贒OM元素上綁定任意類型的數(shù)據(jù),避免了循環(huán)引用的內(nèi)存泄漏風(fēng)險(xiǎn)匕荸。
用法為:$(selector).data(key,value)