jquery 常用方法&ajax

問答

1.jQuery中,$(document).ready()是什么意思?和window.onload 的區(qū)別? 還有其他什么寫法或者替代方法?

  • $(document).ready()意思是等待頁面中的DOM元素加載完畢后執(zhí)行代碼。

  • 與window.onload的區(qū)別:

  • 執(zhí)行的時機:
    window.onload必須等待網頁中的所有的內容加載完畢后(包括圖片)才能執(zhí)行。
    $(document).ready()只需要在頁面中所有的DOM結構繪制完畢后就執(zhí)行,可能與DOM元素關聯的東西并沒有加載完。

  • 編寫的個數:
    window.onload只能編寫一個。如果編寫多個只會執(zhí)行最后一個window.onload代碼。
    $(document).ready()能同時編寫多個,根據編寫順序依次執(zhí)行。

  • 簡寫方式:
    $(document).ready()可以簡寫成:
    $(function(){//code})
    當$()不帶參數時,默認參數就是document,因此還可以簡寫成:
    $().ready(function(){//code})

2.$node.html()和$node.text()的區(qū)別?

  • $node.html():
    當html()沒有設置參數時,返回匹配元素集合中第一個匹配元素的HTML內容。
    當html()設置了HTML字符串時(即.hmlt(htmlString)),覆蓋匹配元素集合中每個匹配元素的內容。

  • $node.text():
    當text()沒有設置參數時,返回匹配元素集合中每個元素的合并文本(刪除HTML標記),包括它們的后代。
    當text()設置了文本時(即.text(text)),覆蓋匹配元素集合中每個匹配元素的內容(特殊的字符會被編碼)。

舉例:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <div class="box1">我是用來測試html()方法的<em>文檔1</em></div>
    <div class="box1">我是用來測試html()方法的<em>文檔2</em></div>
    <div class="box2">我是用來測試html()方法的<em>文檔3</em></div>
    <div class="box2">我是用來測試html()方法的<em>文檔5</em></div>
    <div class="box3">我是用來測試text()方法的<em>文檔6</em></div>
    <div class="box3">我是用來測試text()方法的<em>文檔7</em></div>

    <script src="jquery-3.1.1.js"></script>
    <script>
        console.log($(".box1").html());//只返回了第一個匹配的元素
        $(".box2").html("<strong>我發(fā)生改變了</strong>")//所有匹配的元素內容都發(fā)生了改變,而且hmlt標記有效。
        console.log($(".box3").text());//所有匹配的元素都返回了,而且html標記刪除了
        $(".box3").text("<strong>我也發(fā)生改變了</strong>")//所有匹配的元素內容發(fā)生了改變,但是html標記都被編碼了。
    </script>
</body>
</html>
運行結果

3.$.extend 的作用和用法?

  • 作用:將兩個或更多對象的內容合并到第一個對象
  • 用法:
    1.jQuery.extend( target [, object1 ] [, objectN ] )
    當我們提供兩個或多個對象給$.extend()時,對象的所有屬性都添加到目標對象(target參數)。
    如果目標對象(target參數)的某個屬性在附加對象( [, object1 ] [, objectN ] )中沒有,那么這個屬性會在合并后保留。反之,如果附加對象中的某個屬性在目標對象中沒有,這個屬性在合并后也會保留。
    如果目標對象的某個屬性在附加對象中有,那么這個屬性的值會被附加對象的值覆蓋。
    舉例:
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <script src="jquery-3.1.1.js"></script>
</head>
<body>
<div id="log"></div>
<script>
    var object1 = {
        name : "Ben",
        age : 20,
        body:{heigh:178,weight:60}//body的值會被覆蓋
    };
    var object2 = {
        body: {weight:70},
        sex:"man"
    };
    $.extend( object1, object2 );

    $( "#log" ).append( JSON.stringify( object1 ) );
</script>
</body>
</html>
運行結果

2.jQuery.extend(true,target [, object1 ] [, objectN ] )
這個用法多了一個參數true,它會使合并成為遞歸,也就是深拷貝。
與上面的用法不同處在于如果目標對象的某個屬性在附加對象中有,那么這個屬性的值會發(fā)生合并。
舉例:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <script src="jquery-3.1.1.js"></script>
</head>
<body>
<div id="log"></div>
<script>
    var object1 = {
        name : "Ben",
        age : 20,
        body:{heigh:178,weight:60}//body的值會發(fā)生合并
    };
    var object2 = {
        body: {weight:70},
        sex:"man"
    };
    $.extend(true, object1, object2 );

    $( "#log" ).append( JSON.stringify( object1 ) );
</script>
</body>
</html>
運行結果

3 .jQuery.extend({}, [, object1 ] [, objectN ] )
目標對象為{},這種用法是合并多個對象,但是不改變這些對象。這是常用的插件開發(fā)模式。
舉例:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title></title>
    <script src="jquery-3.1.1.js"></script>
</head>
<body>
<div id="log"></div>
<script>
    var object1 = {
        name : "Ben",
        age : 20,
        body:{heigh:178,weight:60}
    };
    var object2 = {
        body: {
            weight:70
        },
        sex:"man"
    };
    var object3 = $.extend({},object1,object2);

    $( "#log" ).append( "<div>"+JSON.stringify( object1 )+"</div>" );
    $( "#log" ).append( "<div>"+JSON.stringify( object2 )+"</div>" );
    $( "#log" ).append( "<div>"+JSON.stringify( object3 )+"</div>" );

</script>
</body>
</html>
運行結果

4.JQuery 的鏈式調用是什么?

jQuery的鏈式調用就是指對一個對象連續(xù)的使用jQuery方法,例如:
$(this).removerClass("mouseout").addClass("mouseover").next().show()
這么做的好處是讓代碼更加簡潔易讀,減少重復性代碼,提高性能。
其中的原理是執(zhí)行完一個方法后就返回對象本身(return this),然后對象繼續(xù)執(zhí)行后面的方法。

5.JQuery ajax 中緩存怎樣控制?

jQuery ajax方法中是利用cache參數來控制緩存。
設置為true將緩存頁面(默認為ture, dataType為"script"和"jsonp"時默認為false。),如果設置為false,瀏覽器將不會緩存頁面。
其工作原理是在GET請求參數中附加“={timestamp}”時間戳,使請求的鏈接每次都不同。

6.jquery 中 data 函數的作用?

用法:
1.data(key ,value),在匹配元素上存儲任意相關數據。
舉例:

    $("body").data("foo",52);
    $("body").data("bar",{myType:"test",count:40});
    $("body").data({baz:[1,2,3]});

    console.log($("body").data("foo"));
    console.log($("body").data());

運行結果

2..data(key),返回匹配的元素集合中的第一個元素的給定名稱的數據存儲的值。
舉例:

    console.log($("body").data("foo"));//如果指定元素上沒有設置任何值,將返回undefined。
    $("body").data("bar","foobar");
    console.log($("body").data("bar"));
運行結果

代碼:

代碼1地址
代碼1預覽
代碼2地址
代碼2預覽
代碼3地址
代碼3預覽
代碼3本地預覽效果:

GIF.gif


本文版權歸本人和饑人谷所有,轉載請注明來源。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容