jQuery基礎–基本概念

  • 2019 年 10 月 10 日
  • 筆記

為什麼要學習jQuery?

【01-讓div顯示與設置內容.html】

使用javascript開發過程中,有許多的缺點:

1. 查找元素的方法太少,麻煩。  2. 遍歷偽數組很麻煩,通常要嵌套一大堆的for循環。  3. 有兼容性問題。  4. 想要實現簡單的動畫效果,也很麻煩  5. 程式碼冗餘。
<!DOCTYPE html>  <html lang="zh-CN">  <head>    <meta charset="UTF-8">    <title>Title</title>    <style>      div {        height: 200px;        margin-bottom: 10px;        background-color: #a43035;        display: none;      }    </style>    <script>        //等待頁面載入完成後才會執行。      window.onload = function () {        //不爽的地方:        //1. 程式碼比較麻煩,需要遍歷,可能還需要嵌套。        //2. 找對象麻煩,方法少,還長        //3. 會有兼容性問題。        //4. 如果想要實現簡單的動畫效果 animate        //5. js註冊事件,會被覆蓋,addEventListener          var btn1 = document.getElementById("btn1");        var btn2 = document.getElementById("btn2");        var divs = document.getElementsByTagName("div");          btn1.onclick = function () {          for (var i = 0; i < divs.length; i++) {            divs[i].style.display = "block";          }        };          btn2.onclick = function () {          for (var i = 0; i < divs.length; i++) {            //低版本火狐瀏覽器不支援innerText,支援textContent            divs[i].innerText = "我是內容";          }        };      };    </script>  </head>  <body>  <input type="button" value="展示" id="btn1">  <input type="button" value="設置內容" id="btn2">    <div></div>  <div></div>  <div></div>      </body>  </html>
//不爽的地方:        //1. 程式碼比較麻煩,需要遍歷,可能還需要嵌套。        //2. 找對象麻煩,方法少,還長        //3. 會有兼容性問題。        //4. 如果想要實現簡單的動畫效果 animate        //5. js註冊事件,會被覆蓋,addEventListener

1.2. jQuery初體驗

<!--1. 需要引入jQuery文件-->    <script src="jquery-1.12.4.js"></script>    <script>        //2. 入口函數的標準      $(document).ready(function(){        //註冊事件,把on去掉,是一個方法        $("#btn1").click(function () {          //隱式迭代:偷偷的遍歷,jQuery會自動的遍歷,不需要我們遍歷。          $("div").show(1000);        });          $("#btn2").click(function () {          $("div").text("我是內容");        });      });    </script>

  優點總結:

1. 查找元素的方法多種多樣,非常靈活  2. 擁有隱式迭代特性,因此不再需要手寫for循環了。  3. 完全沒有兼容性問題。  4. 實現動畫非常簡單,而且功能更加的強大。  5. 程式碼簡單、粗暴。

什麼是jQuery?

jQuery的官網 http://jquery.com/ jQuery就是一個js庫,使用jQuery的話,會比使用JavaScript更簡單。

js庫:把一些常用到的方法寫到一個單獨的js文件,使用的時候直接去引用這js文件就可以了。(animate.js、common.js)

我們知道了,jQuery其實就是一個js文件,裡面封裝了一大堆的方法方便我們的開發,其實就是一個加強版的common.js,因此我們學習jQuery,其實就是學習jQuery這個js文件中封裝的一大堆方法。

jQuery的版本

官網下載地址:http://jquery.com/download/ jQuery版本有很多,分為1.x 2.x 3.x

大版本分類:

1.x版本:能夠兼容IE678瀏覽器  2.x版本:不兼容IE678瀏覽器  1.x和2.x版本jquery都不再更新版本了,現在只更新3.x版本。    3.x版本:不兼容IE678,更加的精簡(在中國不流行,因為中國使用jQuery的主要目的就是兼容IE678)

  關於壓縮版和未壓縮版

jquery-1.12.4.min.js:壓縮版本,適用於生產環境,因為文件比較小,去除了注釋、換行、空格等東西,但是基本沒有顆閱讀性。  jquery-1.12.4.js:未壓縮版本,適用於學習與開發環境,源碼清晰,易閱讀。

jQuery的入口函數

使用jQuery的三個步驟:

1. 引入jQuery文件  2. 入口函數  3. 功能實現

  關於jQuery的入口函數:

//第一種寫法  $(document).ready(function() {    });  //第二種寫法  $(function() {    });

  jQuery入口函數與js入口函數的對比

1.    JavaScript的入口函數要等到頁面中所有資源(包括圖片、文件)載入完成才開始執行。  2.    jQuery的入口函數只會等待文檔樹載入完成就開始執行,並不會等待圖片、文件的載入。
<script>      //js的入口函數執行要比jQuery的入口函數執行得晚一些。    //jq的入口函數會等待頁面的載入完成才執行,但是不會等待圖片的載入。    //js的入口函數會等待頁面載入完成,並且等待圖片載入完成才開始執行。      window.onload = function () {      console.log("我是js的入口函數");    };      //認識    $(document).ready(function () {      console.log("這是jQuery入口函數的第一種寫法");    });        $(function () {      console.log("這是jQuery入口函數的第二種寫法");    });  </script>

1.6. jQuery對象與DOM對象的區別(重點)

1. DOM對象:使用JavaScript中的方法獲取頁面中的元素返回的對象就是dom對象。  2. jQuery對象:jquery對象就是使用jquery的方法獲取頁面中的元素返回的對象就是jQuery對象。  3. jQuery對象其實就是DOM對象的包裝集(包裝了DOM對象的集合(偽數組))  4. DOM對象與jQuery對象的方法不能混用。

  DOM對象轉換成jQuery對象:【聯想記憶:花錢】

var $obj = $(domObj);  // $(document).ready(function(){});就是典型的DOM對象轉jQuery對象

  jQuery對象轉換成DOM對象:

var $li = $(「li」);  //第一種方法(推薦使用)  $li[0]  //第二種方法  $li.get(0)
<!DOCTYPE html>  <html lang="zh-CN">  <head>    <meta charset="UTF-8">    <title>Title</title>    </head>  <body>  <ul>    <li id="cloth">衣服</li>    <li>褲子</li>    <li>褲衩子</li>    <li>襪子</li>  </ul>    <script src="jquery-1.12.4.js"></script>  <script>      $(function () {        //1. 什麼是DOM對象(js對象):使用js的方式獲取到的元素就是js對象(DOM對象)      //var cloth = document.getElementById("cloth");      //cloth.style.backgroundColor = "pink";        //2. 什麼是jq對象:使用jq的方式獲取到的元素就是jq對象      //var $li = $("li");      //console.log($li);      //$li.text("我改了內容");          //3. jq對象與js對象的區別      //js對象對象不能調用jq對象的方法      //var cloth = document.getElementById("cloth");      //cloth.text("呵呵");        //4. jq對象與js對象的聯繫(jq對象其實就是js對象的一個集合,偽數組,裡面存放了一大堆的js對象)(宏觀上)            //jquery對象能不能調用DOM對象的方法      //var $li = $("li");      //$li[0].setAttribute("name","hehe");        //DOM無法調用jQuery對象的方法:為什麼:因為是兩個不同對象      //DOM對象調用jQuery對象的方法。需要把DOM對象轉換成jQuery對象。      var cloth = document.getElementById("cloth");        //DOM對象就變成jQuery對象      //$(cloth).text("呵呵");        //jQuery對象怎麼轉換成DOM對象(取出來)      var $li = $("li");      $li[1].style.backgroundColor = "red";      $li.get(2).style.backgroundColor = "yellow";                //1. 什麼是DOM對象:用js的方式獲取到的對象時DOM對象      //2. jQuery對象:用jq的方式獲取到的對象時jq對象      //3. 區別與聯繫      //4. 區別:js對象與jq對象的方法不能混著用      //5. 聯繫:        // DOM--> jQuery  $()        // jQuery--》 DOM  $li[0]  $li.get(0)    });      </script>    </body>  </html>

  【練習:隔行變色案例.html】

<!DOCTYPE html>  <html lang="zh-CN">  <head>    <meta charset="UTF-8">    <title>Title</title>  </head>  <body>    <ul>    <li>我是第1個li</li>    <li>我是第2個li</li>    <li>我是第3個li</li>    <li>我是第4個li</li>    <li>我是第5個li</li>    <li>我是第6個li</li>    <li>我是第7個li</li>    <li>我是第8個li</li>    <li>我是第9個li</li>    <li>我是第10個li</li>  </ul>    <script src="jquery-1.12.4.js"></script>  <script>    $(function () {        //就這麼寫,會不會報錯,會不會有效果      var lis = $("li");      for (var i = 0; i < lis.length; i++) {        if (i % 2 == 0) {            // lis:jq對象          // lis[i]:DOM對象,通過下標取出來了          lis[i].style.backgroundColor = "pink";        } else {          lis[i].style.backgroundColor = "hotpink";        }      }      });  </script>  </body>  </html>

  $符號的實質

//$其實就是一個函數,以後用$的時候,記得跟小括弧 $();    //參數不同,功能就不同    //3種用法    //1. 參數是一個function, 入口函數    $(function () {      });    console.log(typeof $);      //2. $(domobj)  把dom對象轉換成jquery對象  //  $(document).ready(function () {  //  //  });      //3. 參數是一個字元串,用來找對象    //$("div") $("div ul")   $(".current")