jQuery動畫與ajax

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

當(dāng)DOM加載完成時,執(zhí)行其中的代碼。
與原生JavaScript中的load事件需要在頁面所有內(nèi)容加載完成后才執(zhí)行不同,ready只要在DOM結(jié)構(gòu)加載完成后,就可以執(zhí)行。

$(document).ready(function(){
});
可簡寫為:
$(function(){
})

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

$node.html():選取節(jié)點的文本內(nèi)容和標簽。
$node.text():選取節(jié)點的文本內(nèi)容。

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

jQuery.extend( [deep ], target[, object1] [, objectN ] )

  1. 當(dāng)我們提供兩個或多個對象給$.entend(),對象的所有屬性都添加到目標對象(target參數(shù))。同時,對象里如果有相同的屬性,后面的將覆蓋前面的。
  2. 如果只有一個參數(shù)提供給$.extend(),這意味著目標參數(shù)被省略。在這種情況下,jQuery對象本身被被默認為目標對象。這樣,我們可以在jQuery的命名空間下添加新的功能。這對于插件開發(fā)者希望向jQuery中添加新函數(shù)時很有用的。

目標參數(shù)將被修改,并且通過$.extend()返回。然而,如果我們想保留原對象,我們可以通過傳遞一個空對象作為目標對象:
var object = $.extend({}, object1, object2);
在默認情況下,通過$.extend()合并操作不是遞歸的;
如果第一個對象的屬性本身是一個對象或數(shù)組,那么它將完全用第二個對象相同的key重寫一個屬性。如果將deep設(shè)置成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 );
console.log(object1);           // 其中banana:{price:200}

$.extend(true, object1, object2 );    //banana: {price: 200, weight: 52}

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

jQuery鏈式調(diào)用:在對象上一次性調(diào)動多個方法
$(this).addClass("active").siblings().removeClass("active");
$('#ct').css('color','blue').show(400).hide();
因為大部分對象方法的最后是return this,所以有了鏈式調(diào)用,簡易代碼。

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

jQuery.data( element, key, value )
element:要存儲數(shù)據(jù)的DOM對象
key:存儲的數(shù)據(jù)名
value:新數(shù)據(jù)值
jQuery.data() 方法允許我們在DOM元素上附加任意類型的數(shù)據(jù),避免了循環(huán)引用的內(nèi)存泄漏風(fēng)險。如果 DOM 元素是通過 jQuery 方法刪除的或者當(dāng)用戶離開頁面時,jQuery 同時也會移除添加在上面的數(shù)據(jù)。

6:寫出以下功能對應(yīng)的 jQuery 方法:

  • 給元素 $node 添加 class active,給元素 $noed 刪除 class active
$('#xxx').addClass('active');
$('#xxx').removeClass('active');
  • 展示元素$node, 隱藏元素$node
$('#xxx').hide();
$('#xxx').show();
  • 獲取元素$node 的 屬性: id、src、title, 修改以上屬性
$node.attr('id')
$node.attr('id','value')
$node.attr('src')
$node.attr('src','value')
$node.attr('title')
$node.attr('title','value')
  • 給$node 添加自定義屬性data-src
$node.attr('data-src','123');
$node.data('src','somevalue')
  • 在$ct 內(nèi)部最開頭添加元素$node
    $ct.prepend($node)
  • 在$ct 內(nèi)部最末尾添加元素$node
    $ct.append($node)
  • 刪除$node
    $node.remove()
    *把$ct里內(nèi)容清空
    $ct.empty()
  • 在$ct 里設(shè)置 html <div class="btn"></div>
    $ct.html('<div class="btn"></div>')
  • 獲取、設(shè)置$node 的寬度、高度(分別不包括內(nèi)邊距、包括內(nèi)邊距、包括邊框、包括外邊距)
//不包括內(nèi)邊距
$node.height();              //讀取高度
$node.width();               //讀取寬度
$node.height('50px');     //設(shè)置高度
$node.width('50px');      //設(shè)置寬度

//包括內(nèi)邊距
$node.innerHeight();    //讀取高度
$node.innerWidth();      //讀取寬度
$node.innerHeight( '50px' );    //設(shè)置高度
$node.innerHeight( '50px' );    //設(shè)置高度

 //包括邊框
$node.outerHeight();    //讀取高度
$node.outerwidth();    //讀取寬度
$node.outerHeight('50px');    //設(shè)置高度
$node.outerwidth('50px');    //設(shè)置寬度

//包括外邊距
$node.outerHeight(true);    //讀取高度
$node.outerwidth(true);    //讀取寬度

  • 獲取窗口滾動條垂直滾動距離
    $node.scrollTop()

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

  • 修改$node 的樣式,字體顏色設(shè)置紅色,字體大小設(shè)置14px
    $node.css({"color":"red","font-size":"14px"})

  • 遍歷節(jié)點,把每個節(jié)點里面的文本內(nèi)容重復(fù)一遍

  $element.each(function(){
      var $this = $(this);
      $this.text($this.text()+$this.text());
  });
  • 從$ct 里查找 class 為 .item的子元素
    $ct.find('.item')
  • 獲取$ct 里面的所有孩子
    $ct.children()
  • 對于$node,向上找到 class 為'.ct'的父親,在從該父親找到'.panel'的孩子
    $node.parent('.ct').find('.panel')
  • 獲取選擇元素的數(shù)量
    $node.length
  • 獲取當(dāng)前元素在兄弟中的排行
    $node.index()

7:用jQuery實現(xiàn)一下操作

code

  • 當(dāng)點擊$btn 時,讓 $btn 的背景色變?yōu)榧t色再變?yōu)樗{色
var $btn = $('.btn');
$btn.on('click',function(){
  $btn.css('background','blue');
  setTimeout(function(){
    $btn.css('background','red');
  },1000);
});
  • 當(dāng)窗口滾動時,獲取垂直滾動距離
$(window).scroll(function(){
  $('div.scroll').html($(this).scrollTop());
});
  • 當(dāng)鼠標放置到$div 上,把$div 背景色改為紅色,移出鼠標背景色變?yōu)榘咨?/li>
var $div = $('div.box');
$div.on('mouseenter',function(){
  $div.css('background','red');
});
$div.on('mouseleave',function(){
  $div.css('background','white');
});
  • 當(dāng)鼠標激活 input 輸入框時讓輸入框邊框變?yōu)樗{色,當(dāng)輸入框內(nèi)容改變時把輸入框里的文字小寫變?yōu)榇髮懀?dāng)輸入框失去焦點時去掉邊框藍色,控制臺展示輸入框里的文字
var $ipt = $('.ipt');
$ipt.on('focus',function(){
  $ipt.addClass('border');
}).on('keyup',function(){
  $ipt.val($ipt.val().toUpperCase());
}).on('blur',function(){
  $ipt.removeClass('border');
  console.log($ipt.val());
});
  • 當(dāng)選擇 select 后,獲取用戶選擇的內(nèi)容
var $slt = $('#slt');
$slt.on('change',function(){
  console.log($slt.val());
});

8: 用 jQuery ajax 實現(xiàn)如下效果。`當(dāng)點擊加載更多會加載數(shù)據(jù)展示到頁面效果預(yù)覽

code

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>news</title>
  <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  <style>
  .contain div{
    border: 1px solid #ccc;
    padding: 10px;
    margin-bottom: 10px;
  }
  .contain div:hover {
    background: green;
    color: white;
  }
  button {
    display: block;
    padding: 0;
    margin: 0 auto;
    background: white;
    border-radius: 3px;
    border: 1px solid red;
  }
  button a {
    display: inline-block;
    padding: 10px;
    color: red;
    font-size: 16px;
    text-decoration: none;
  }
  </style>
</head>
<body>
  <div class="contain"> 
    <div>內(nèi)容1</div>
    <div>內(nèi)容2</div>
  </div>
  <button ><a href="javascript:;">加載更多</a></button>
  <script type="text/javascript">
    var pageIndex = 3;
     $("button").on('click',function(){
      console.log(3);
      $.ajax({
        url:'http://localhost:8080/loadMore',
        method: 'get',
        data:{
          page: pageIndex,
          length: 5
        }
      }).done(function(result){
        appendHtml(result);
        pageIndex += 5;
      }).fail(function(){
        console.log(2);
      })
    })
//別人用jQuery寫得,我用css寫的
   //$('.cot').on('mouseenter','li',function(){
   //  $(this).css({
    //    background: 'green',
    //    color: 'white'
    //  })
   // });

    // $('.contain div').on('mouseenter',function(){
    //   $(this).css({'background':'green','color':'white'});
    // });
    // $('.contain div').on('mouseleave',function(){
    //   $(this).css({'background':'white','color':'black'});
    // });

    function appendHtml(content){               
        var html = '';
        for (var i = 0; i < content.length; i++) {
            html += '<div>' + content[i] + '</div>';
        }
        $('.contain').append(html);
    }
  </script>
</body>
</html>

app.get('/loadMore', function(req, res){
  var index = req.query.page;
  var len = req.query.length;
  var data = [];
  for(var i=0; i<parseInt(len); i++){
    data.push('內(nèi)容'+(parseInt(index) + i));
  }
  res.send(data);
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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