天天看點

JQuery基本選擇器、層級選擇器和基本過濾器介紹

在介紹選擇器之前,我們首先來了解一下JQuery中的ready(fn)函數。這是事件子產品中最重要的一個函數,因為它可以極大地提高web應用程式的響應速度。

簡單地說,這個方法純粹是對向window.load事件注冊事件的替代方法。通過使用這個方法,可以在DOM載入就緒能夠讀取并操縱時立即調用你所綁定的函數,而99.99%的JavaScript函數都需要在那一刻執行。

有一個參數--對jQuery函數的引用--會傳遞到這個ready事件處理函數中。可以給這個參數任意起一個名字,并是以可以不再擔心命名沖突而放心地使用$别名。請確定在元素的onload事件中沒有注冊函數,否則不會觸發$(document).ready()事件。可以在同一個頁面中無限次地使用$(document).ready()事件。其中注冊的函數會按照(代碼中的)先後順序依次執行。

下面舉一個簡單的例子來加以說明。

<html>

   <head>

      <title>My JSP 'jquerydemo1.jsp' starting page</title>

      //首先引入jquery所需要的js檔案

      <script type="text/javascript" src="./js/jquery-1.4.4.js">

</script>

      <script type="text/javascript">

$(document).ready(function() {

   alert("JQuery第一個案例!");

});

</script>

   </head>

   <body>

      <br>

      <br>

      <h2 align="center" style="color: #333333;">

         第一個JQuery案例

      </h2>

   </body>

</html>

接下來我們繼續介紹JQuery的基本選擇器與層級選擇器。

一、JQuery基本選擇器

#id  根據給定的ID比對一個元素。

HTML 代碼:

<div id="notMe"><p>id="notMe"</p></div>

<div id="myDiv">id="myDiv"</div>

jQuery 代碼:

$("#myDiv");

結果:

[ <div id="myDiv">id="myDiv"</div> ]

element  根據給定的元素名比對所有元素

HTML 代碼:

<div>DIV1</div>

<div>DIV2</div>

<span>SPAN</span>

jQuery 代碼:

$("div");

結果:

[ <div>DIV1</div>, <div>DIV2</div> ]

.class  根據給定的類比對元素。

HTML 代碼:

<div class="notMe">div class="notMe"</div>

<div class="myClass">div class="myClass"</div>

<span class="myClass">span class="myClass"</span>

jQuery 代碼:

$(".myClass");

結果:

[ <div class="myClass">div class="myClass"</div>, <span class="myClass">span class="myClass"</span> ]

*  比對所有元素,多用于結合上下文來搜尋。

HTML 代碼:

<div>DIV</div>

<span>SPAN</span>

<p>P</p>

jQuery 代碼:

$("*")

結果:

[ <div>DIV</div>, <span>SPAN</span>, <p>P</p> ]

selector1,selector2,selectorN  将每一個選擇器比對到的元素合并後一起傳回。你可以指定任意多個選擇器,并将比對到的元素合并到一個結果内。

HTML 代碼:

<div>div</div>

<p class="myClass">p class="myClass"</p>

<span>span</span>

<p class="notMyClass">p class="notMyClass"</p>

jQuery 代碼:

$("div,span,p.myClass")

結果:

[ <div>div</div>, <p class="myClass">p class="myClass"</p>, <span>span</span> ]

二、層級選擇器

ancestor descendant  在給定的祖先元素下比對所有的後代元素

找到表單中所有的 input 元素

HTML 代碼:

<form>

  <label>Name:</label>

  <input name="name" />

  <fieldset>

      <label>Newsletter:</label>

      <input name="newsletter" />

 </fieldset>

</form>

<input name="none" />

jQuery 代碼:

$("form input")

結果:

[ <input name="name" />, <input name="newsletter" /> ]

parent > child  在給定的父元素下比對所有的子元素,用以比對元素的選擇器,并且它是第一個選擇器的子元素。

比對表單中所有的子級input元素。

HTML 代碼:

<form>

  <label>Name:</label>

  <input name="name" />

  <fieldset>

      <label>Newsletter:</label>

      <input name="newsletter" />

 </fieldset>

</form>

<input name="none" />

jQuery 代碼:

$("form > input")

結果:

[ <input name="name" /> ]

prev + next  比對所有緊接在 prev 元素後的 next 元素

比對所有跟在 label 後面的 input 元素

HTML 代碼:

<form>

  <label>Name:</label>

  <input name="name" />

  <fieldset>

      <label>Newsletter:</label>

      <input name="newsletter" />

 </fieldset>

</form>

<input name="none" />

jQuery 代碼:

$("label + input")

結果:

[ <input name="name" />, <input name="newsletter" /> ]

prev ~ siblings  比對 prev 元素之後的所有 siblings 元素

找到所有與表單同輩的 input 元素

HTML 代碼:

<form>

  <label>Name:</label>

  <input name="name" />

  <fieldset>

      <label>Newsletter:</label>

      <input name="newsletter" />

 </fieldset>

</form>

<input name="none" />

jQuery 代碼:

$("form ~ input")

結果:

[ <input name="none" /> ]

三、基本過濾器

: first  比對找到的第一個元素

查找表格的第一行

HTML 代碼:

<table>

  <tr><td>Header 1</td></tr>

  <tr><td>Value 1</td></tr>

  <tr><td>Value 2</td></tr>

</table>

jQuery 代碼:

$("tr:first")

結果:

[ <tr><td>Header 1</td></tr> ]

:last  比對找到的最後一個元素

查找表格的最後一行

HTML 代碼:

<table>

  <tr><td>Header 1</td></tr>

  <tr><td>Value 1</td></tr>

  <tr><td>Value 2</td></tr>

</table>

jQuery 代碼:

$("tr:last")

結果:

[ <tr><td>Value 2</td></tr> ]

:not  去除所有與給定選擇器比對的元素

在jQuery 1.3中,已經支援複雜選擇器了(例如:not(div a) 和 :not(div,a))

查找所有未選中的 input 元素

HTML 代碼:

<input name="apple" />

<input name="flower" checked="checked" />

jQuery 代碼:

$("input:not(:checked)")

結果:

[ <input name="apple" /> ]

:even  比對所有索引值為偶數的元素,從 0 開始計數

查找表格的1、3、5...行(即索引值0、2、4...)

HTML 代碼:

<table>

  <tr><td>Header 1</td></tr>

  <tr><td>Value 1</td></tr>

  <tr><td>Value 2</td></tr>

</table>

jQuery 代碼:

$("tr:even")

結果:

[ <tr><td>Header 1</td></tr>, <tr><td>Value 2</td></tr> ]

:odd  比對所有索引值為奇數的元素,從 0 開始計數

查找表格的2、4、6行(即索引值1、3、5...)

HTML 代碼:

<table>

  <tr><td>Header 1</td></tr>

  <tr><td>Value 1</td></tr>

  <tr><td>Value 2</td></tr>

</table>

jQuery 代碼:

$("tr:odd")

結果:

[ <tr><td>Value 1</td></tr> ]

:eq  比對一個給定索引值的元素

查找第二行

HTML 代碼:

<table>

  <tr><td>Header 1</td></tr>

  <tr><td>Value 1</td></tr>

  <tr><td>Value 2</td></tr>

</table>

jQuery 代碼:

$("tr:eq(1)")

結果:

[ <tr><td>Value 1</td></tr> ]

:gt  比對所有大于給定索引值的元素

  查找第二第三行,即索引值是1和2,也就是比0大

HTML 代碼:

<table>

  <tr><td>Header 1</td></tr>

  <tr><td>Value 1</td></tr>

  <tr><td>Value 2</td></tr>

</table>

jQuery 代碼:

$("tr:gt(0)")

結果:

[ <tr><td>Value 1</td></tr>, <tr><td>Value 2</td></tr> ]

:lt  比對所有小于給定索引值的元素

查找第一第二行,即索引值是0和1,也就是比2小

HTML 代碼:

<table>

  <tr><td>Header 1</td></tr>

  <tr><td>Value 1</td></tr>

  <tr><td>Value 2</td></tr>

</table>

jQuery 代碼:

$("tr:lt(2)")

結果:

[ <tr><td>Header 1</td></tr>, <tr><td>Value 1</td></tr> ]

:header  比對如 h1, h2, h3之類的标題元素

給頁面内所有标題加上背景色

HTML 代碼:

<h1>Header 1</h1>

<p>Contents 1</p>

<h2>Header 2</h2>

<p>Contents 2</p>

jQuery 代碼:

$(":header").css("background", "#EEE");

結果:

[ <h1 style="background:#EEE;">Header 1</h1>, <h2 style="background:#EEE;">Header 2</h2> ]

:animated  比對所有正在執行動畫效果的元素

隻有對不在執行動畫效果的元素執行一個動畫特效

HTML 代碼:

<button id="run">Run</button><div></div>

jQuery 代碼:

$("#run").click(function(){

  $("div:not(:animated)").animate({ left: "+=20" }, 1000);

});

繼續閱讀