1. 程式人生 > >一片文章叫你玩轉JQuery

一片文章叫你玩轉JQuery

1.為什麼要學習jQuery?
    js的缺點:
        1)花費10天時間開發設計,js中有很多的漏洞;不適合於大系統的開發。
        2)獲取dom元素時,是很不靈活的,主要通過4個方法。
        3)方法的長度太長,記憶難度比較大。
        4)方法還有瀏覽器大戰遺留下的問題,開發時需要做相容性處理。
    若像CSS一樣獲取DOM元素:
        [1] id選擇器:#id名稱
        [2] class 選擇器:.className
        [3] 標籤選擇器:tagName

2.jQuery 的簡介:
    1)jQuery 是 js 的庫檔案,對js做了封裝。類似於jar包的概念。
    2)jQuery 可以像CSS一樣獲取DOM元素。
    3)jQuery 提供了很多的方法,方便對DOM元素的操作。
    4)jQuery 提供了很多的外掛,方便開發者使用。(jQuerySchool)
    5)jQuery 社群網站特別的繁榮。

3.jQuery 在開發領域:佔了舉足輕重的作用;
    一個專案而言:一半java一半jQuery.


選擇器是jQuery的核心重點,要操作dom元素,首先要通過選擇器獲取DOM元素
所有的選擇器(除了過濾方法),其他的都是css選擇器。
1.基本選擇器:
    [1] id選擇器:#id名稱
    [2] class選擇器:.className
    [3] 標籤選擇器:tagName
<div id="oDiv">div元素</div>
<h1 class="cls">H1 元素</h1>
<h2 class="cls">H2 元素</h2>
<h3 class="cls">H3 元素</h3>
<ul>
   <li>吃飯</li>
   <li>睡覺</li>
   <li>淘寶雙11</li>
</ul>
<!-- 1.引入jquery的庫檔案 -->
<script type="text/javascript" src="../jquery-1.12.3.min.js"></script>
<script type="text/javascript">
   //ID選擇器
   $("#oDiv").css("color","red");
   //class選擇器
   $(".cls").css("color","green");
   //標籤選擇器
   $("li").css("color","blue");
</script>

2.層級選擇器:查詢某個元素下的子元素或者後代元素
    [1] parent > child : 查詢parent下所有的子元素
    [2] parent child : 查詢parent下所有的後代元素
<body>
   <div id="haha">
       <p>你好1</p>
       <p>你好2</p>
       <p>你好3</p>
   </div>
   <div>
       <p>你好4</p>
       <p>你好5</p>
       <p>你好6</p>
   </div>
   <ul id="ul">
       <li>
          <ul>
              <li>1</li>
              <li>2</li>
              <li>3</li>
          </ul>
       </li>
       <li>
          <ul>
              <li>4</li>
              <li>5</li>
              <li>6</li>
          </ul>
       </li>
   </ul>

3.基本過濾選擇器:從一堆dom元素中,過濾出需要的元素
    [1] :first , 獲取第一個元素
    [2] :last , 獲取最後一個元素
    [3] :eq(index) , 獲取第index個元素,index下標從0開始
    [4] :gt(index) , 獲取>index的元素,index下標從0開始
    [5] :lt(index) , 獲取<index的元素,index下標從0開始
    [6] :even , 獲取偶數行元素,以下標為準 0,2,4 ...
    [7] :odd , 獲取奇數行元素,以下標為準 1,3,5 ...

<!-- 1.引入jquery的庫檔案 -->
<script type="text/javascript" src="../jquery-1.12.3.min.js"></script>
<script type="text/javascript">
   //:first , 過濾出第一個元素
   $("tr:first").css("background","red");
   //:last , 過濾出最後一個元素
   $("tr:last").css("background","blue");
   //:eq(index) : 將第三行設定黃色
   $("tr:eq(2)").css("background","yellow");
   //:gt(index) greater
   $("tr:gt(3)").css("background","green");
   //:lt(index) letter
   $("tr:lt(2)").css("background","gray");
   //實現隔行變色
   //:even
   $("tr:even").css("background","pink");
   //:odd
   $("tr:odd").css("background","orange");
</script>

4.過濾方法
    [1] eq(index) : 通過下標獲取元素,等價於 :eq(index)
    [2] first() : 獲取第一個元素,等價於 :first
    [3] last() : 獲取最後一個元素,等價於 :last
    [4] next() : 獲取緊挨著的下一個同胞元素
    [5] prev() : 獲取緊挨著的上一個同胞元素
    [6] siblings() : 獲取所有的同胞元素
    [7] parent() : 獲取父元素
    [8] parents(選擇器) : 通過選擇器獲取任何一個祖先元素
    [9] find(選擇器) :通過選擇器查詢後代元素,等價於後代選擇器

<body>
<div>table 之前的div元素</div>
<table border="1" cellpadding="5" cellspacing="0" width="500">
   <tr>
       <td>姓名</td>
       <td>年齡</td>
       <td>性別</td>
       <td>地址</td>
   </tr>
   <tr>
       <td>張三</td>
       <td>23</td>
       <td>男</td>
       <td>北京海淀</td>
   </tr>
   <tr>
       <td>李四</td>
       <td>44</td>
       <td>女</td>
       <td>北京通州</td>
   </tr>
   <tr>
       <td>王五</td>
       <td>67</td>
       <td>男</td>
       <td>北京昌平</td>
   </tr>
   <tr>
       <td>趙六</td>
       <td>88</td>
       <td>女</td>
       <td>北京朝陽</td>
   </tr>
   <tr>
       <td>錢琪</td>
       <td>25</td>
       <td>女</td>
       <td>
          <button id="del">刪除</button>
       </td>
   </tr>
</table>
<h1><></h1>
<h1>哈哈</h1>
<!-- 1.引入jquery的庫檔案 -->
<script type="text/javascript" src="../jquery-1.12.3.min.js"></script>
<script type="text/javascript">
   //first() : 獲取第一個元素
   //獲取第一個tr
   var first = $("tr").first();
   first.css("background","green");
   //last() : 獲取最後一個元素
   //獲取最後一個tr
   $("tr").last().css("background","red");
   //eq(index) : 獲取第index個元素,index從0開始
   $("tr").eq(2).css("background","gray");
   //next() : 獲取緊挨著的下一個同胞元素
   //獲取table緊挨著的下一個同胞元素
   $("table").next().css("color","red");
   //prev() : 獲取緊挨著的上一個同胞元素
   //獲取table緊挨著的上一個同胞元素
   $("table").prev().css("font-size","30px");
   //siblings() : 獲取所有的同胞元素
   //獲取table所有的同胞元素
   console.log($("table").siblings());
   //parent() : 獲取父元素
   //獲取table的父元素
   console.log($("table").parent());
   //parents(選擇器) : 獲取任何一個祖先元素
   //獲取id=del的祖先元素tr
   console.log($("#del").parents("tr"));
   //find(選擇器) :通過選擇器查詢後代元素
   //在table中查詢id=del的後代元素
   $("table").find("#del").css("color","blue");
   
</script>

5.屬性過濾選擇器
    1)[屬性名稱=屬性值] : 獲取“屬性名稱=屬性值“的元素,經常用在獲取表單元素

UserName : <input type="text" name="username" />
Password : <input type="password" name="pwd" />
<!-- 1.引入jquery的庫檔案 -->
<script type="text/javascript" src="../jquery-1.12.3.min.js"></script>
<script type="text/javascript">
   //屬性過濾選擇器,一般用在獲取表單元素,因為表單元素必有name屬性
   //查詢 name=username的input元素
   $("input[name=username]").css("border","2px solid red");
   //查詢name=pwd的input元素
   $("input[name=pwd]").css("border","2px solid green");
</script>

6.子元素過濾選擇器:根據層次關係過濾需要的元素
    [1] :first-child , 獲取第一個子元素
    [2] :last-child , 獲取最後一個子元素
    [3] :nth-child(index) , 獲取任何一個子元素 index :從1開始
<body>
   <ul>
       <li>1</li>
       <li>2</li>
       <li>3</li>
   </ul>
   <ul>
       <li>4</li>
       <li>5</li>
       <li>6</li>
   </ul>
<!-- 1.引入jquery的庫檔案 -->
<script type="text/javascript" src="../jquery-1.12.3.min.js"></script>
<script type="text/javascript">
   //1.先獲取 ul下所有的li元素
   //2.刷選出第一個元素
   //$("ul li:first").css("background","red");
   //子元素過濾選擇器
   //1.查詢所有的ul
   //2.查詢每個ul下邊第一個子元素
   $("ul li:first-child").css("background","red");
   $("ul li:last-child").css("background","green");
   $("ul li:nth-child(2)").css("background","blue");
</script>

7.表單過濾選擇器:獲取表單元素
    :checked , 獲取選中的checkbox或者radio
<body>
   性別:
       <input type="radio" value="男" name="sex">男
       <input type="radio" value="女" name="sex">女
   興趣:
       <input type="checkbox" value="吃飯" />吃飯
       <input type="checkbox" value="睡覺" />睡覺
       <input type="checkbox" value="打豆豆" />打豆豆
       <input type="checkbox" value="淘寶雙11" />淘寶雙11
       <input type="checkbox" value="LOL" />LOL
       <button id="btn">獲取選中的checkbox</button>
<!-- 1.引入jquery的庫檔案 -->
<script type="text/javascript" src="../jquery-1.12.3.min.js"></script>
<script type="text/javascript">
   document.getElementById("btn").onclick = function() {
       //獲取選中的checkbox
       console.log($("input:checked"));
       //只獲取選中的radio
      console.log($("input[name=sex]:checked"));
   }
</script>

jQuery為了簡化事件的處理,封裝了一套事件方法
事件方法:
   事件屬性去掉on就是事件方法
1.事件的新增方式:
    $(選擇器).事件方法(事件處理函式);
2.常用事件:
   [1] 點選事件 :click(fn);fn:事件處理函式

   $("button").click(function() {
       alert("點選事件觸發");
   });

[2] 失去焦點事件:blur(fn);fn:事件處理函式

   $("input[name=username]").blur(function() {
       console.log("失去焦點事件")
   });

[3] 獲取焦點事件:focus(fn);fn:事件處理函式

   $("input[name=username]").focus(function() {
       console.log("獲取焦點事件")
   });

[4] 內容改變事件:change(fn);fn:事件處理函式
 $("input[name=username]").change(function() {
       console.log("內容改變了");
   });

 [5] 表單提交事件:submit(fn);fn:事件處理函式

   $("form").submit(function() {
       alert("表單提交了");
       //通過返回值可以控制表單的提交,返回true是提交表單;返回false是阻止提交表單
       return true;
   });
    

1)隱藏和顯示:通過改變透明度、寬度以及高度來隱藏顯示元素
    show(time) : 花費time毫秒顯示元素
    hide(time) : 花費time毫秒隱藏元素

1.ready的事件:
    1)當文件載入完畢時,會執行ready事件。
    2)ready事件的使用:
        完全體:
        $(document).ready(function() {
        });
        簡化版:
        $(function(){
        })
    3)onload 事件和 ready 事件的區別?
        1)onload 事件一個網頁只能有一個;
            ready事件,一個網頁中可以有多個,非常適合團隊開發;彼此程式碼互不干擾。
        2)onload 等文件載入完畢時觸發,要等整個資源(圖片,視訊,音訊)都載入完畢;
            ready事件,等文件結構載入完畢,不用管資源是否載入完畢。

2.jQuery物件和DOM的轉換問題:
    1) DOM物件 : 所有的HTML元素,js認為都是DOM物件.
    2) jQuery物件 : $ 函式的返回值,都是jQuery物件.
    3) 聯絡:
        jQuery 物件中儲存了DOM物件,可以對DOM物件進行操作。
    4)DOM物件轉換為jQuery物件:
        var jQuery物件 = $(DOM物件);
    5)jQuery物件轉換為DOM物件:
        [1] 通過陣列的索引獲取DOM物件:var btn1 = btns[1];

        [2] 通過jQuery物件的get(index) : var btn1 = btns.get(0);

你兒時望著的月亮

從離家那晚跌落了東山

就沒再爬起過