1. jQuery 中皿哨, $(document).ready()是什么意思滥比?
為了防止文檔在完全加載(就緒)之前運(yùn)行jQuery代碼盗扇,如果在文檔沒(méi)有加載之前就運(yùn)行函數(shù)早直,可能操作失敗寥假。必須在文檔加載完成后再執(zhí)行操作,可使用ready事件霞扬,作用相當(dāng)于把js寫(xiě)到body的末尾糕韧。
$(document).ready(function() {
//do something
})
$().ready(function() {
//do something
})
$(function() {
//do something
})
2. $node.html()和$node.text()的區(qū)別?
$node.html(),返回所選擇元素內(nèi)的html內(nèi)容喻圃,包含html標(biāo)簽和文本內(nèi)容
$node.text()萤彩,返回所選擇元素內(nèi)的文本內(nèi)容,不包含html標(biāo)簽斧拍,只包含文本內(nèi)容
3. $.extend 的作用和用法?
$.extend方法用于將多個(gè)對(duì)象合并進(jìn)第一個(gè)對(duì)象雀扶。
var o1 = {p1:'a',p2:'b'};
var o2 = {p1:'c'};
$.extend(o1,o2);
o1.p1 // "c"
$.extend的另一種用法是生成一個(gè)新對(duì)象,用來(lái)繼承原有對(duì)象肆汹。這時(shí)愚墓,它的第一個(gè)參數(shù)應(yīng)該是一個(gè)空對(duì)象。
var o1 = {p1:'a',p2:'b'};
var o2 = {p1:'c'};
var o = $.extend({},o1,o2);
o
// Object {p1: "c", p2: "b"}
默認(rèn)情況下昂勉,extend方法生成的對(duì)象是“淺拷貝”浪册,也就是說(shuō),如果某個(gè)屬性是對(duì)象或數(shù)組岗照,那么只會(huì)生成指向這個(gè)對(duì)象或數(shù)組的指針村象,而不會(huì)復(fù)制值。如果想要“深拷貝”谴返,可以在extend方法的第一個(gè)參數(shù)傳入布爾值true。
var o1 = {p1:['a','b']};
var o2 = $.extend({},o1);
var o3 = $.extend(true,{},o1);
o1.p1[0]='c';
o2.p1 // ["c", "b"]
o3.p1 // ["a", "b"]
4. jQuery 的鏈?zhǔn)秸{(diào)用是什么咧织?
使用jQuery方法時(shí)對(duì)象方法返回的是對(duì)象本身嗓袱,可以繼續(xù)調(diào)用此對(duì)象的其他方法,實(shí)現(xiàn)連續(xù)調(diào)用多個(gè)方法习绢。
$('#btn').on('click', function() {
$('.main').fadeIn('slow').animate({height: '100px'}, 500);
})
5. jQuery 中 data 函數(shù)的作用
類似于html5中的data-屬性渠抹,用來(lái)方便用戶給標(biāo)簽綁定數(shù)據(jù),jquery的data函數(shù)用于在當(dāng)前jquery對(duì)象所匹配的所有元素上存取數(shù)據(jù)闪萄,data()函數(shù)存取的數(shù)據(jù)都是臨時(shí)數(shù)據(jù)梧却,一旦頁(yè)面刷新,之前存放的數(shù)據(jù)都將不復(fù)存在败去。如果需要移除用removeData()方法放航。用法:可以傳入兩個(gè)參數(shù),分別是key和value圆裕,或者傳入一個(gè)object广鳍。需要注意是當(dāng)讀取數(shù)據(jù)時(shí)只以第一個(gè)匹配元素為準(zhǔn)荆几。
6. 寫(xiě)出以下功能對(duì)應(yīng)的 jQuery 方法:
1.給元素 $node 添加 class active,給元素 $noed 刪除 class active
$node.addClass('active');//添加
$node.removeClass('active');//刪除
2.展示元素$node, 隱藏元素$node
$node.show();
$node.hide();
3.獲取元素$node 的 屬性: id赊时、src吨铸、title, 修改以上屬性
// 獲得
$node.attr('id');
$node.attr('src');
$node.attr('title');
// 修改
$node.attr('id', 'wrap');
$node.attr('src', 'https://github.com');
$node.attr('title', 'welcome');
4.給$node 添加自定義屬性data-src
$node.attr('data-src', wrap);
5.在$ct 內(nèi)部最開(kāi)頭添加元素$node
$ct.prepend($node);
6.在$ct 內(nèi)部最末尾添加元素$node
$ct.append($node);
7.刪除$node
$node.remove()
8.把$ct里內(nèi)容清空
$ct.empty();
9.在$ct 里設(shè)置 html <div class="btn"></div>
$ct.html('<div class="btn"></div>')
10.獲取祖秒、設(shè)置$node 的寬度诞吱、高度(分別不包括內(nèi)邊距、包括內(nèi)邊距竭缝、包括邊框房维、包括外邊距)
$node.width(); // content
$node.height(); // content
$node.innerWidth(); // content+padding
$node.innerHeight(); // content+padding
$node.outWidth(); // content+padding+border
$node.outHeight(); // content+padding+border
$node.outWidth(true); // content+padding+border+margin
$node.outHeight(true); // content+padding+border+margin
11.獲取窗口滾動(dòng)條垂直滾動(dòng)距離
$(window).scrollTop();
12.獲取$node 到根節(jié)點(diǎn)水平、垂直偏移距離
$node.offset();
13.修改$node 的樣式歌馍,字體顏色設(shè)置紅色握巢,字體大小設(shè)置14px
$node.css({'color': 'red'; 'font-size': '14px'})
14.遍歷節(jié)點(diǎn),把每個(gè)節(jié)點(diǎn)里面的文本內(nèi)容重復(fù)一遍
$.each(function () {
console.log($(this).text());
})
15.從$ct 里查找 class 為 .item的子元素
$ct.find('.item');
16.獲取$ct 里面的所有孩子
$ct.children();
17.對(duì)于$node松却,向上找到 class 為'.ct'的父親暴浦,在從該父親找到'.panel'的孩子
$node.parent('.ct').find('.panel');
18.獲取選擇元素的數(shù)量
$node.length;
19.獲取當(dāng)前元素在兄弟中的排行
$(this).index();