進階任務15 ajax

題目1:jQuery 中, $(document).ready()是什么意思?

當DOM準備就緒時,指定一個函數來執行。原生JavaScript的load事件,會在所有的東西(比如圖片加載完)才會執行函數,但在大多數情況下,只要DOM結構完全加載后,就可以運行腳本。

題目2: $node.html()和$node.text()的區別?

.html()獲取集合中第一個匹配元素的HTML內容 或 設置每一個匹配元素的html內容。設置匹配元素html內容方法對 XML 文檔無效。

<div class="container">
  <div class="box">Box1</div>
  </div>
//$('.container').html() 輸出 <div class="box">Box1</div>
//$('container').html('<p>This a new content</p>') div里內容會被重寫;

<div class="container">
 <p>This a new content</p>
  </div>

.text()得到匹配元素集合中每個元素的文本內容結合,包括他們的后代,或設置匹配元素集合中每個元素的文本內容為指定的文本內容,.text() 在XML 和 HTML 文檔中都能使用

<div class="container">
  <div class="box1">Box1</div>
 <div class="box">Box2</div>
 <div class="box">Box3</div>
  </div>
//$('.container').text()  輸出 Box1、Box2、Box3
//$('.box1').text('box4') 會變為 <div class="box1">Box4</div>

題目3: $.extend 的作用和用法?

當我們提供兩個或多個對象給$.extend(),對象的所有屬性都添加到目標對象(target參數)。

$.extend({a:1},{a:2,b:3},{b:4,c:5})
//輸出 {a:2,b:4,c:5}

如果只有一個參數提供給$.extend(),這意味著目標參數被省略。在這種情況下,jQuery對象本身被默認為目標對象。這樣,我們可以在jQuery的命名空間下添加新的功能。這對于插件開發者希望向 jQuery 中添加新函數時是很有用的

$.extend({a:1})
function ( selector, context ) {
        // The jQuery object is actually just the init constructor 'enhanced'
        // Need init if jQuery is called (just allow error to be thrown if not included)
        return new jQuery.…

目標對象(第一個參數)將被修改,并且將通過$.extend()返回。然而,如果我們想保留原對象,我們可以通過傳遞一個空對象作為目標對象:

$.extend({},{a:1},{a:2,b:3},{b:4,c:5})

在默認情況下,通過$.extend()合并操作不是遞歸的;如果第一個對象的屬性本身是一個對象或數組,那么它將完全用第二個對象相同的key重寫一個屬性。這些值不會被合并。如果將 true作為該函數的第一個參數,那么會在對象上進行遞歸的合并。

var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
};
var object2 = {
  banana: { price: 200 },
  durian: 100
};
//$.extend( object1, object2 ) 輸出{apple: 0, banana: {price: 200}, cherry: 97, durian: 100}
//$.extend(true, object1, object2 )  輸出{apple: 0, banana: {price: 200,weight: 52}, cherry: 97, durian: 100}

題目4: jQuery 的鏈式調用是什么?

簡單說就是可以連續的使用 jQuery 方法的過程叫做 鏈式調用,因為jquery對象的方法的返回值大多還是jquery對象,所以可以不斷的調用各種方法。例子:

//$("選擇器")
//  .方法1(回調函數1)
//  .方法2(回調函數2)
//   …… 
//  .方法N(回調函數N);

$('.container')
.find('.pannels')
.eq(2)
.text('good')

題目5: jQuery 中 data 函數的作用

在匹配元素上存儲任意相關數據 或 返回匹配的元素集合中的第一個元素的給定名稱的數據存儲的值。.data() 方法允許我們在DOM元素上綁定任意類型的數據,避免了循環引用的內存泄漏風險。

.data( key, value )
key
類型: String
一個字符串,用戶存儲數據的名稱
value
類型: Object
新的數據值;它可以是任意的Javascript數據類型,包括Array 或者 Object

$("container").data("boxSize", {width:20,height:20,length:40});
$("container").data('boxSize') //輸出{width:20,height:20,length:40}

題目6:寫出以下功能對應的 jQuery 方法:

  • 給元素 $node 添加 class active
    $node.addClass('active')
  • 給元素 $node 刪除 class active
    $node.removeClass('active')
  • 展示元素$node, 隱藏元素$node
    $node.toggleClass('active')
  • 獲取元素$node 的 屬性: id、src、title, 修改以上屬性
    $node.attr('id') $node.attr('id',val)
    $node.attr('src') $node.attr('src',val)
    $node.attr('title') $node.attr('title',val)
  • 給$node 添加自定義屬性data-src
    $node.data('data-src',val)
  • 在$ct 內部最開頭添加元素$node
    $ct.prepend($node)
    $node.prependto($ct)
  • 在$ct 內部最末尾添加元素$node
    $ct.append($node)
    $node.appendto($ct)
  • 刪除$node
    $node.remove()
  • 把$ct里內容清空
    $ct.empty()
  • 在$ct 里設置 html <div class="btn"></div>
    $ct.html('<div class="btn"></div>')
  • 獲取、設置$node 的寬度、高度(分別不包括內邊距、包括內邊距、包括邊框、包括外邊距)
$node.height();//不包括內邊距高度,僅包括內容
$node.innerHeight();//包括內容和內邊距高度
$node.outerHeight();//包括內容,內邊距,邊框高度
$node.outerHeight(true);//包括內容,內邊距,邊框,外邊距寬度
寬度用法同上
  • 獲取窗口滾動條垂直滾動距離
    $(window).scrollTop()
  • 獲取$node 到根節點水平、垂直偏移距離
    $node.offset()
  • 修改$node 的樣式,字體顏色設置紅色,字體大小設置14px
$node.css('color':'red').css('font-size','14px')`
或者
$node.css({
    color:'red',
    font-size:'14px'
})
  • 遍歷節點,把每個節點里面的文本內容重復一遍
$('.box>ul>li').each(function(){
  var str = $(this).text()+$(this).text()
  $(this).text(str)
})
  • 從$ct 里查找 class 為 .item的子元素
    $ct.find('.item')
  • 獲取$ct 里面的所有孩子
    $ct.children()
  • 對于$node,向上找到 class 為'.ct'的父親,在從該父親找到'.panel'的孩子
    $node.parent('.ct')
    $node.parents('.ct').parents('.panel')
  • 獲取選擇元素的數量
    $node.length(size()已棄用)
  • 獲取當前元素在兄弟中的排行
    $node.index()

題目7:用jQuery實現以下操作

當點擊$btn 時,讓 $btn 的背景色變為紅色再變為藍色
當窗口滾動時,獲取垂直滾動距離
當鼠標放置到$div 上,把$div 背景色改為紅色,移出鼠標背景色變為白色
當鼠標激活 input 輸入框時讓輸入框邊框變為藍色,當輸入框內容改變時把輸入框里的文字小寫變為大寫,當輸入框失去焦點時去掉邊框藍色,控制臺展示輸入框里的文字
當選擇 select 后,獲取用戶選擇的內容

題目7效果預覽

題目8效果預覽

題目9效果預覽

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容