1. jQuery 中, $(document).ready()是什么意思?
為了防止文檔在完全加載(就緒)之前運行jQuery代碼,如果在文檔沒有加載之前就運行函數(shù),可能操作失敗。必須在文檔加載完成后再執(zhí)行操作,可使用ready事件,作用相當于把js寫到body的末尾。
$(document).ready(function() {
//do something
})
$().ready(function() {
//do something
})
$(function() {
//do something
})
2. $node.html()和$node.text()的區(qū)別?
$node.html(),返回所選擇元素內的html內容,包含html標簽和文本內容
$node.text(),返回所選擇元素內的文本內容,不包含html標簽,只包含文本內容
3. $.extend 的作用和用法?
$.extend方法用于將多個對象合并進第一個對象。
var o1 = {p1:'a',p2:'b'};
var o2 = {p1:'c'};
$.extend(o1,o2);
o1.p1 // "c"
$.extend的另一種用法是生成一個新對象,用來繼承原有對象。這時,它的第一個參數(shù)應該是一個空對象。
var o1 = {p1:'a',p2:'b'};
var o2 = {p1:'c'};
var o = $.extend({},o1,o2);
o
// Object {p1: "c", p2: "b"}
默認情況下,extend方法生成的對象是“淺拷貝”,也就是說,如果某個屬性是對象或數(shù)組,那么只會生成指向這個對象或數(shù)組的指針,而不會復制值。如果想要“深拷貝”,可以在extend方法的第一個參數(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 的鏈式調用是什么?
使用jQuery方法時對象方法返回的是對象本身,可以繼續(xù)調用此對象的其他方法,實現(xiàn)連續(xù)調用多個方法。
$('#btn').on('click', function() {
$('.main').fadeIn('slow').animate({height: '100px'}, 500);
})
5. jQuery 中 data 函數(shù)的作用
類似于html5中的data-屬性,用來方便用戶給標簽綁定數(shù)據(jù),jquery的data函數(shù)用于在當前jquery對象所匹配的所有元素上存取數(shù)據(jù),data()函數(shù)存取的數(shù)據(jù)都是臨時數(shù)據(jù),一旦頁面刷新,之前存放的數(shù)據(jù)都將不復存在。如果需要移除用removeData()方法。用法:可以傳入兩個參數(shù),分別是key和value,或者傳入一個object。需要注意是當讀取數(shù)據(jù)時只以第一個匹配元素為準。
6. 寫出以下功能對應的 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 內部最開頭添加元素$node
$ct.prepend($node);
6.在$ct 內部最末尾添加元素$node
$ct.append($node);
7.刪除$node
$node.remove()
8.把$ct里內容清空
$ct.empty();
9.在$ct 里設置 html <div class="btn"></div>
$ct.html('<div class="btn"></div>')
10.獲取、設置$node 的寬度、高度(分別不包括內邊距、包括內邊距、包括邊框、包括外邊距)
$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.獲取窗口滾動條垂直滾動距離
$(window).scrollTop();
12.獲取$node 到根節(jié)點水平、垂直偏移距離
$node.offset();
13.修改$node 的樣式,字體顏色設置紅色,字體大小設置14px
$node.css({'color': 'red'; 'font-size': '14px'})
14.遍歷節(jié)點,把每個節(jié)點里面的文本內容重復一遍
$.each(function () {
console.log($(this).text());
})
15.從$ct 里查找 class 為 .item的子元素
$ct.find('.item');
16.獲取$ct 里面的所有孩子
$ct.children();
17.對于$node,向上找到 class 為'.ct'的父親,在從該父親找到'.panel'的孩子
$node.parent('.ct').find('.panel');
18.獲取選擇元素的數(shù)量
$node.length;
19.獲取當前元素在兄弟中的排行
$(this).index();