JQuery動畫與ajax

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

當DOM準備就緒時,指定一個函數(shù)來執(zhí)行。與load事件要在頁面所有內(nèi)容加載完后才執(zhí)行不同,read事件只要在DOM結構完全加載后,就可以執(zhí)行。使用read方法,能保證在DOM準備好后就執(zhí)行函數(shù),所以,這里是進行所有事件綁定及運行其它jQuery代碼的地方。


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

  • html()
    1.不傳參
    html():不管取得的jQuery對象是否為多個,只獲取匹配的第一個元素的html內(nèi)容。這個函數(shù)不能用于XML文檔。但可以用于XHTML文檔,返回的是一個String

      //html頁面代碼
      <div>
          <p><span>早上</span></p>
          <p><span>好</span></p>;
      </div>
      //jquery代碼
      $("p").html();
      //結果
      <span>早上</span>;
    

    2.傳參
    html(val):設置每一個匹配元素的html內(nèi)容。這個函數(shù)不能用于XML文檔。但可以用于XHTML文檔。如果傳參包括HTML節(jié)點,則會以生成元素節(jié)點的形式添加。返回一個jQuery對象

      //html頁面代碼
      <div>這里會顯示:
          <p></p>
          <p></p>
      </div>
      //jquery代碼
      $("p").html("<span>早上</span>");
    
  • text()
    1.不傳參
    text():取得所有匹配元素的內(nèi)容并返回拼接后的字符串。結果是由所有匹配元素包含的文本內(nèi)容組合起來的文本。返回的是一個String

      //html頁面代碼
      <div>
          <p><span>早上</span></p>
          <p><span>好</span></p>;
     </div>
     //jquery代碼
     $("p").text();
    

2.傳參
text(val):設置所有匹配元素的文本內(nèi)容,與 html()類似,但如果傳參包含’<’或’>’,將會轉義成文本顯示在文本節(jié)點中。返回一個jQuery對象

//html頁面代碼
<div>這里會顯示:
    <p></p>
    <p></p>
</div>
//jquery代碼
$("p").text("<span>早上</span>");

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

作用:

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

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

用法:

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

//如果第一個對象的屬性本身是一個對象或數(shù)組,那么它將完全用第二個對象相同的key重寫一個屬性。這些值不會被合并。
//如果將 true作為該函數(shù)的第一個參數(shù),那么會在對象上進行遞歸的合并。
var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
};  
var object2 = {
  banana: { price: 200 },
  durian: 100
};

// Merge object2 into object1
$.extend( object1, object2 );

4.jQuery 的鏈式調(diào)用是什么?

jQuery最方便的一點就是,它的大部分方法返回的都是jQuery對象,因此可以鏈式操作。也就是說,后一個方法可以緊跟著寫在前一個方法后面。


5.jQuery 中 data 函數(shù)的作用

data函數(shù)可以讀取html標簽中的data-xxx自定義屬性,并且為標簽對象儲存各種自定義屬性

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div>
//獲取屬性
$( "div" ).data( "role" ) === "page";
$( "div" ).data( "lastValue" ) === 43;
$( "div" ).data( "hidden" ) === true;
$( "div" ).data( "options" ).name === "John";

//設置屬性
$( "div" ).data( "role","newPage" )

6.寫出以下功能對應的 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.sttr('src');
    $node.sttr('title');
    
    $node.attr('id','1');
    $node.sttr('src','2');
    $node.sttr('title','3');
    
  • 給$node 添加自定義屬性data-src

    $node.attr('data-src','123');
    
  • 在$ct 內(nèi)部最開頭添加元素$node

      $ct.prepend('node');
    
  • 在$ct 內(nèi)部最末尾添加元素$node

      $ct.append('node');
    
  • 刪除$node

    $node.remove();
    
  • 把$ct里內(nèi)容清空

    $ct.html('');
    
  • 在$ct 里設置 html <div class="btn"></div>

    $ct.html('<div class="btn"></div>');
    
  • 獲取、設置$node 的寬度、高度(分別不包括內(nèi)邊距、包括內(nèi)邊距、包括邊框、包括外邊距)

    //不包括內(nèi)邊距
    $node.height();              //讀取高度
    $node.width();               //讀取寬度
    $node.height('50px');     //設置高度
    $node.width('50px');      //設置寬度
    
    //包括內(nèi)邊距
    $node.innerHeight();    //讀取高度
    $node.innerWidth();      //讀取寬度
    $node.innerHeight( '50px' );    //設置高度
    $node.innerHeight( '50px' );    //設置高度
    
     //包括邊框
    $node.outerHeight();    //讀取高度
    $node.outerwidth();    //讀取寬度
    $node.outerHeight('50px');    //設置高度
    $node.outerwidth('50px');    //設置寬度
    
    //包括外邊距
    $node.outerHeight(true);    //讀取高度
    $node.outerwidth(true);    //讀取寬度
    
  • 獲取窗口滾動條垂直滾動距離

    $node..scrollTop();
    
  • 獲取$node 到根節(jié)點水平、垂直偏移距離

      $node.offset();
    
  • 修改$node 的樣式,字體顏色設置紅色,字體大小設置14px

      $node.css({'color':'red','font-size':'14px'});
    
  • 遍歷節(jié)點,把每個節(jié)點里面的文本內(nèi)容重復一遍

      $element.each(function(){
          var $this = $(this);
          $this.text($this.text()+$this.text());
      });
    
  • 從$ct 里查找 class 為 .item的子元素

    $ct.children('.item');
    
  • 獲取$ct 里面的所有孩子

    $ct.children();
    
  • 對于$node,向上找到 class 為'.ct'的父親,在從該父親找到'.panel'的孩子

    $node.parents('.ct').find('.panel');
    
  • 獲取選擇元素的數(shù)量

    $('div').length;
    

7.用jQuery實現(xiàn)以下操作

  • 當點擊$btn 時,讓 $btn 的背景色變?yōu)榧t色再變?yōu)樗{色
    var $btn = $('#btn');
    $btn.on('click', function(e) {
    var $this = $(this);
    $this.css({
    'background-color': 'red'
    });

              setTimeout(function() {
                  $this.css({
                      'background-color': 'blue'
                  })
              }, 1000)
          })
    
  • 當窗口滾動時,獲取垂直滾動距離

    $(window).on('scroll', function(e) {
              var scrollTop = $(this).scrollTop();
              console.log(scrollTop);
    })
    
  • 當鼠標放置到$div 上,把$div 背景色改為紅色,移出鼠標背景色變?yōu)榘咨?/p>

          var $div = $('#div');
    
          $div.on('mouseenter', function(e) {
              $(this).css({
                  'background-color': 'red'
              });
          })
    
          $div.on('mouseleave', function(e) {
              $(this).css({
                  'background-color': '#fff'
              });
          })
    
  • 當鼠標激活 input 輸入框時讓輸入框邊框變?yōu)樗{色,當輸入框內(nèi)容改變時把輸入框里的文字小寫變?yōu)榇髮懀斴斎肟蚴ソ裹c時去掉邊框藍色,控制臺展示輸入框里的文字

          var $input = $('input');
          $input.on('focus', function(e) {
              $(this).css({
                  'outline': '2px solid blue'
              });
          })
          $input.on('blur', function(e) {
              $(this).css({
                  'outline': 'none'
              });
              console.log($(this).val());
          })
          $input.on('keyup', function(e) {
              var $this = $(this);
              var valStr = $this.val();
              valStr = valStr.toUpperCase();
              $this.val(valStr);
          })
    
  • 當選擇 select 后,獲取用戶選擇的內(nèi)容

          var $select = $('#select');
          $select.on('change', function(e) {
              console.log($(this).val());
          })
    

8.用 jQuery ajax 實現(xiàn)如下效果。當點擊加載更多會加載數(shù)據(jù)展示到頁面

image.png
    <html>

    <head>
    </head>
    <style>
        .ct {
            width: 800px;
            margin: 50px auto;
        }
        
        * {
            margin: 0;
            padding: 0;
        }
        
        ul {
            list-style: none;
        }
        
        ul li {
            height: 22px;
            padding: 10px;
            margin: 10px;
            border: 1px solid #777;
            cursor: pointer;
        }
        
        ul li:hover {
            background: yellowgreen;
        }
        
        #load-more {
            display: block;
            width: 80px;
            height: 40px;
            line-height: 40px;
            border: 1px solid #E27272;
            border-radius: 5px;
            color: #E27272;
            text-decoration: none;
            text-align: center;
            margin: 10px auto;
        }
        
        #load-more:hover {
            background-color: #E27272;
            color: #000;
        }
        
        #load-more.disabled {
            background-color: #ccc;
            color: #777;
            border-color: #777;
        }
        
        #load-more img {
            height: 40px;
            width: 40px;
        }
    </style>

    <body>
        <div class="ct">
            <ul class="content-ct">
                <li>測試1</li>
                <li>測試2</li>
                <li>測試3</li>
            </ul>

            <a href="javascript:void(0)" id="load-more" data-sending="false">加載更多</a>
        </div>

        <script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
        <script>
            $(function() {
                var $btn = $('#load-more')
                var index = 1;
                var length = 5;

                $btn.on('click', function() {

                    if (isSending()) {
                        return false;
                    }

                    $.ajax({
                        url: '/news',
                        method: 'get',
                        data: {
                            index: index,
                            length: length
                        }

                    }).done(function(result) {
                        render(result);
                        index = index + length;

                        //完成請求后解鎖
                        setSending(false);
                        loadMoreDisplay(isSending());

                    }).fail(function(jqXHR, textStatus) {

                        consloe.log(textStatus);

                    });

                    //設置鎖
                    setSending(true);

                    //設置按鈕樣式
                    loadMoreDisplay(isSending);
                })

                function setSending(val) {
                    $btn.data('sending', val)
                }

                function isSending() {
                    return $btn.data('sending') === 'true' ? true : false;
                }

                function render(content) {
                    var $ul = $('.content-ct');
                    var $df = document.createDocumentFragment();

                    content.forEach(function(element) {
                        var $li = $('<li></li>');
                        $li.text(element);
                        $ul.append($li);
                    });


                }

                function loadMoreDisplay(isSending) {
                    if (isSending) {
                        $btn.html('![](imgs/loading.gif)');
                    } else {
                        $btn.html('加載更多');
                    }
                }
            })
        </script>

    </body>

    </html>
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,400評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,136評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,714評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,452評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,818評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,997評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,552評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,292評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,510評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,721評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,121評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,429評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,235評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,480評論 2 379

推薦閱讀更多精彩內(nèi)容

  • 題目1: jQuery 中, $(document).ready()是什么意思? ready( handler )...
    南山碼農(nóng)閱讀 348評論 0 2
  • 1: jQuery 中, $(document).ready()是什么意思? 當DOM加載完成時,執(zhí)行其中的代碼。...
    hhg121閱讀 267評論 0 0
  • 題目1: jQuery 中, $(document).ready()是什么意思? 相當于window.onload...
    漂于行閱讀 274評論 0 0
  • jQuery 中, $(document).ready()是什么意思? 描述: 當DOM準備就緒時,指定一個函數(shù)來...
    liushaung閱讀 268評論 0 2
  • 一、 jQuery 中, $(document).ready()是什么意思? 為了防止文檔在完全加載(就緒)之前運...
    婷樓沐熙閱讀 333評論 2 1