題目1: jQuery 中久橙, $(document).ready()是什么意思耘柱?
當(dāng)DOM準(zhǔn)備就緒時(shí)蒂萎,指定一個(gè)函數(shù)來執(zhí)行猎物。
網(wǎng)頁加載步驟:
- 解析HTML結(jié)構(gòu)
- 加載外部腳本和樣式表文件虎囚。
- 解析并執(zhí)行腳本代碼
- 構(gòu)造HTML DOM結(jié)構(gòu)
- 加載圖片等外部文件
- 頁面加載文件
ready()在4.構(gòu)造HTML DOM結(jié)構(gòu)完成后觸發(fā)。傳遞處理函數(shù)給.ready()方法蔫磨,能保證DOM準(zhǔn)備好后就執(zhí)行這個(gè)函數(shù)溜宽,因此,這里是進(jìn)行所有其它事件綁定及運(yùn)行其它 jQuery 代碼的最佳地方质帅。當(dāng)使用的腳本依賴 CSS 屬性值時(shí)适揉,需要特別注意,要保證外部的樣式或內(nèi)嵌的樣式被加載完后煤惩,再調(diào)用腳本嫉嘀。而load()在6. 頁面加載文件 完成后觸發(fā)。
題目2: $node.html()和$node.text()的區(qū)別?
html是獲取節(jié)點(diǎn)內(nèi)的所有內(nèi)容魄揉,包括標(biāo)簽剪侮、文本。 text是獲取節(jié)點(diǎn)內(nèi)的文本。
題目3: $.extend 的作用和用法?
jQuery.extend( [deep ], target, object1 [, objectN ] )
用來合并兩個(gè)或以上的對(duì)象到目標(biāo)對(duì)象瓣俯,默認(rèn)進(jìn)行淺拷貝(只拷貝第一層杰标,不考慮嵌套),如果不想改變拷貝源對(duì)象彩匕,可以傳入一個(gè){}空對(duì)象作為target對(duì)象腔剂。
deep為布爾值,如果是true驼仪,合并成為遞歸(又叫做深拷貝)掸犬。
例:
var obj1 = {
a: 1,
b: 2
}
var obj2 = {
b: 3,
c: 4
}
console.log(obj1)
$.extend(obj1,obj2)
console.log(obj1)
題目4: jQuery 的鏈?zhǔn)秸{(diào)用是什么?
由于jQuery的方法都會(huì)返回一個(gè)jQuery對(duì)象绪爸,所以使得一個(gè)對(duì)象可以多次調(diào)用湾碎。
題目5: jQuery 中 data 函數(shù)的作用
data() 方法向被選元素附加數(shù)據(jù),或者從被選元素獲取數(shù)據(jù)奠货。
通過data()函數(shù)存取的數(shù)據(jù)都是臨時(shí)數(shù)據(jù)介褥,一旦頁面刷新,之前存放的數(shù)據(jù)都將不復(fù)存在递惋。
該函數(shù)屬于jQuery對(duì)象(實(shí)例)呻顽。如果需要移除通過data()函數(shù)存放的數(shù)據(jù),請(qǐng)使用 removeData() 函數(shù)丹墨。
題目6:寫出以下功能對(duì)應(yīng)的 jQuery 方法:
- 給元素 $node 添加 class active廊遍,給元素 $noed 刪除 class active
$(node).addClass('active') //添加
$(node).removeClass('active') //刪除
- 展示元素$node, 隱藏元素$node
$(node).show()
$(node).hide()
- 獲取元素$node 的 屬性: id、src贩挣、title喉前, 修改以上屬性
獲取:
$(node).attr('id')
$(node).attr('src')
$(node).attr('title')
修改:
$(node).attr('id','newid')
$(node).attr('src','newsrc')
$(node).attr('title','newtitle')
- 給$node 添加自定義屬性data-src
$(node).data('src','somesrc');
- 在$ct 內(nèi)部最開頭添加元素$node
$('.ct').prepend($node)
- 在$ct 內(nèi)部最末尾添加元素$node
$('.ct').append($node)
- 刪除$node
$(node).remove()
- 把$ct里內(nèi)容清空
$('.ct').empty()
- 在$ct 里設(shè)置 html <div class="btn"></div>
$('.ct').html('<div class="btn"></div>')
- 獲取王财、設(shè)置$node 的寬度卵迂、高度(分別不包括內(nèi)邊距、包括內(nèi)邊距绒净、包括邊框见咒、包括外邊距)
不包括內(nèi)邊距:
$(node).width() //.css(width) 和 .width()之間的區(qū)別是后者返回一個(gè)沒有單位的數(shù)值
$(node).height()
包括內(nèi)邊距:
$(node).innerWidth()
$(node).innerHeight()
包括邊框:
$(node).outerWidth()
$(node).outerHeight()
包括外邊距:
$(node).outerWidth(true)
$(node).outerHeight(true)
- 獲取窗口滾動(dòng)條垂直滾動(dòng)距離
$(window).scrollTop()
- 獲取$node 到根節(jié)點(diǎn)水平、垂直偏移距離
$node.offset()
//注意:jQuery不支持獲取隱藏元素的偏移坐標(biāo)挂疆。同樣的改览,也無法取得隱藏元素的 border, margin, 或 padding 信息。
//若元素的屬性設(shè)置的是 visibility:hidden缤言,那么我們依然可以取得它的坐標(biāo)宝当。但是若設(shè)置的屬性是 display:none,由于在繪制 DOM 樹時(shí)根本就不繪制該元素胆萧,所以它的位置屬性值是 undefined庆揩。
- 修改$node 的樣式,字體顏色設(shè)置紅色,字體大小設(shè)置14px
$(node).css({
'color' : 'red',
'font-size' : '14px'
})
- 遍歷節(jié)點(diǎn)订晌,把每個(gè)節(jié)點(diǎn)里面的文本內(nèi)容重復(fù)一遍
$(node).each(function(){
var str = $(this).text()
$(this).text(str+str)
})
- 從$ct 里查找 class 為 .item的子元素
$('.ct').find('.item')
- 獲取$ct 里面的所有孩子
$ct.children()
.children()方法允許我們通過在DOM樹中對(duì)這些元素的直接子元素進(jìn)行搜索虏辫,并且構(gòu)造一個(gè)新的匹配元素的jQuery對(duì)象。.find()和.children()方法是相似的锈拨,但后者只是針對(duì)向下一個(gè)級(jí)別的DOM樹砌庄。
.parents()和.parent()方法是相似的,但后者只是進(jìn)行了一個(gè)單級(jí)的DOM樹查找(注:也就是只查找一層推励,直接的父元素鹤耍,而不是更加上級(jí)的祖先元素)肉迫。此外验辞,$( "html" ).parent()方法返回一個(gè)包含document的集合,而$( "html" ).parents()返回一個(gè)空集合喊衫。
- 對(duì)于$node跌造,向上找到 class 為'.ct'的父親,在從該父親找到'.panel'的孩子
$(node).parent('.ct').children('.panel')
- 獲取選擇元素的數(shù)量
$node.length;
$node.size();
- 獲取當(dāng)前元素在兄弟中的排行
$node.index();