標籤:

jQuery速覽(二)

接上篇:jQuery速覽(一)

四、jQuery 遍歷

jQuery 遍歷,意為"移動",用於根據其相對於其他元素的關係來"查找"(或選取)HTML 元素。以某項選擇開始,並沿著這個選擇移動,直到抵達您期望的元素為止。下圖展示了一個家族樹。通過 jQuery 遍歷,您能夠從被選(當前的)元素開始,輕鬆地在家族樹中向上移動(祖先),向下移動(子孫),水平移動(同胞)。這種移動被稱為對 DOM 進行遍歷。

圖示解析:

<div> 元素是 <ul> 的父元素,同時是其中所有內容的祖先。

<ul> 元素是 <li> 元素的父元素,同時是 <div> 的子元素

左邊的 <li> 元素是 <span> 的父元素,<ul> 的子元素,同時是 <div> 的後代。

<span> 元素是 <li> 的子元素,同時是 <ul> 和 <div> 的後代。

兩個 <li> 元素是同胞(擁有相同的父元素)。

右邊的 <li> 元素是 <b> 的父元素,<ul> 的子元素,同時是 <div> 的後代。

<b> 元素是右邊的 <li> 的子元素,同時是 <ul> 和 <div> 的後代。

1、jQuery 遍歷 - 祖先:

(1)jQuery parent() 方法:

parent() 方法返回被選元素的直接父元素。該方法只會向上一級對 DOM 樹進行遍歷,下面的例子返回每個 <span> 元素的的直接父元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><style>.ancestors *{ display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px;}</style><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("span").parent().css({"color":"red","border":"2px solid red"});});</script></head><body><div class="ancestors"> <div stylex="width:500px;">div (曾祖父元素) <ul>ul (祖父元素) <li>li (父元素) <span>span</span> </li> </ul> </div>

顯示結果如下:

(2)jQuery parents() 方法:

parents() 方法返回被選元素的所有祖先元素,它一路向上直到文檔的根元素 (<html>):

<!DOCTYPE html><html><head><meta charset="utf-8"><style>.ancestors *{ display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px;}</style><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("span").parents().css({"color":"red","border":"2px solid red"});});</script></head><body class="ancestors">body (曾曾祖父元素) <div stylex="width:500px;">div (曾祖父元素) <ul>ul (祖父元素) <li>li (父元素) <span>span</span> </li> </ul> </div></body></html>

顯示結果如下:

(3)jQuery parentsUntil() 方法:

parentsUntil() 方法返回介於兩個給定元素之間的所有祖先元素。下面的例子返回介於 <span> 與 <div> 元素之間的所有祖先元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><style>.ancestors *{ display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px;}</style><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("span").parentsUntil("div").css({"color":"red","border":"2px solid red"});});</script></head><body class="ancestors"> body (曾曾祖父元素) <div stylex="width:500px;">div (曾祖父元素) <ul>ul (祖父元素) <li>li (父元素) <span>span</span> </li> </ul> </div></body></html>

顯示結果如下:

2、jQuery 遍歷 - 後代:

(1)jQuery children() 方法:

children() 方法返回被選元素的所有直接子元素。該方法只會向下一級對 DOM 樹進行遍歷。下面的例子返回每個 <div> 元素的所有直接子元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><style>.descendants *{ display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px;}</style><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("div").children().css({"color":"red","border":"2px solid red"});});</script></head><body><div class="descendants" stylex="width:500px;">div (當前元素) <p>p (兒子元素) <span>span (孫子元素)</span> </p> <p>p (兒子元素) <span>span (孫子元素)</span> </p> </div></body></html>

顯示結果如下:

(2)jQuery find() 方法:

find() 方法返回被選元素的後代元素,一路向下直到最後一個後代。下面的例子返回屬於 <div> 後代的所有 <span> 元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><style>.descendants *{ display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px;}</style><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("div").find("span").css({"color":"red","border":"2px solid red"});});</script></head><body><div class="descendants" stylex="width:500px;">div (當前元素) <p>p (兒子元素) <span>span (孫子元素)</span> </p> <p>p (兒子元素) <span>span (孫子元素)</span> </p> </div></body></html>

顯示結果如下:

3、jQuery 遍歷 - 同胞(siblings):

(1)jQuery siblings() 方法:

siblings() 方法返回被選元素的所有同胞元素,下面的例子返回 <h2> 的所有同胞元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><style>.siblings *{ display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px;}</style><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("h2").siblings().css({"color":"red","border":"2px solid red"});});</script></head><body class="siblings"><div>div (父元素) <p>p</p> <span>span</span> <h2>h2</h2> <h3>h3</h3> <p>p</p></div></body></html>

顯示結果如下:

(2)jQuery next() 方法:

next() 方法返回被選元素的下一個同胞元素。該方法只返回一個元素。下面的例子返回 <h2> 的下一個同胞元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><style>.siblings *{ display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px;}</style><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("h2").next().css({"color":"red","border":"2px solid red"});});</script></head><body class="siblings"><div>div (父元素) <p>p</p> <span>span</span> <h2>h2</h2> <h3>h3</h3> <p>p</p></div></body></html>

顯示結果如下:

(3)jQuery nextAll() 方法:

nextAll() 方法返回被選元素的所有跟隨的同胞元素。下面的例子返回 <h2> 的所有跟隨的同胞元素:

$(document).ready(function(){ $("h2").nextAll();});

(4)jQuery nextUntil() 方法:

nextUntil() 方法返回介於兩個給定參數之間的所有跟隨的同胞元素。下面的例子返回介於 <h2> 與 <h6> 元素之間的所有同胞元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><style>.siblings *{ display: block; border: 2px solid lightgrey; color: lightgrey; padding: 5px; margin: 15px;}</style><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("h2").nextUntil("h6").css({"color":"red","border":"2px solid red"});});</script></head><body class="siblings"><div>div (父元素) <p>p</p> <span>span</span> <h2>h2</h2> <h3>h3</h3> <h4>h4</h4> <h5>h5</h5> <h6>h6</h6> <p>p</p></div></body></html>

顯示結果如下:

4、jQuery 遍歷- 過濾:

(1)jQuery first() 方法:

first() 方法返回被選元素的首個元素,下面的例子選取首個 <div> 元素內部的第一個 <p> 元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("div p").first().css("background-color","yellow");});</script></head><body><h1>歡迎訪問我的主頁</h1><div> <p>這是 div 中的一個段落。</p></div><div> <p>這是另外一個 div 中的一個段落。</p></div><p>這是一個段落。</p></body></html>

顯示結果如下:

(2)jQuery last() 方法:

last() 方法返回被選元素的最後一個元素,下面的例子選擇最後一個 <div> 元素中的最後一個 <p> 元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("div p").last().css("background-color","yellow");});</script></head><body><h1>歡迎訪問我的主頁</h1><div> <p>這是 div 中的一個段落。</p></div><div> <p>這是另外一個 div 中的一個段落。</p></div><p>這是一個段落。</p></body></html>

顯示結果如下:

(3)jQuery eq() 方法:

eq() 方法返回被選元素中帶有指定索引號的元素。索引號從 0 開始,因此首個元素的索引號是 0 而不是 1。下面的例子選取第二個 <p> 元素(索引號 1):

$(document).ready(function(){ $("p").eq(1);});

(4)jQuery filter() 方法:

filter() 方法允許您規定一個標準。不匹配這個標準的元素會被從集合中刪除,匹配的元素會被返回。下面的例子返回帶有類名 "url" 的所有 <p> 元素:

<!DOCTYPE html><html><head><meta charset="utf-8"><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("p").filter(".url").css("background-color","yellow");});</script></head><body><h1>歡迎訪問我的主頁</h1><p>菜鳥教程 (index 0).</p><p class="url">http://www.runoob.com (index 1)。</p><p>google (index 2).</p><p class="url">http://www.google.com (index 3)。</p></body></html>

顯示結果如下:

(5)jQuery not() 方法:

not() 方法返回不匹配標準的所有元素(提示:not() 方法與 filter() 相反),下面的例子返回不帶有類名 "url" 的所有 <p> 元素:

$(document).ready(function(){ $("p").not(".url");});

五、jQuery - AJAX 簡介

1、jQuery load() 方法:

load() 方法從伺服器載入數據,並把返回的數據放入被選元素中語法如下:

$(selector).load(URL,data,callback);必需的 URL 參數規定您希望載入的 URL。可選的 data 參數規定與請求一同發送的查詢字元串鍵/值對集合。可選的 callback 參數是 load() 方法完成後所執行的函數名稱。

示例:這是示例文件("demo_test.txt")的內容:

<h2>jQuery AJAX 是個非常棒的功能!</h2><p id="p1">這是段落的一些文本。</p>

下面的例子會把文件 "demo_test.txt" 的內容載入到指定的 <div> 元素中:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoob.com)</title><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("button").click(function(){ $("#div1").load("/try/ajax/demo_test.txt"); });});</script></head><body><div id="div1"><h2>使用 jQuery AJAX 修改文本內容</h2></div><button>獲取外部內容</button></body></html>

2、AJAX get() 和 post() 方法:

(1)jQuery $.get() 方法:

$.get() 方法通過 HTTP GET 請求從伺服器上請求數據,語法如下:

$.get(URL,callback);必需的 URL 參數規定您希望請求的 URL。可選的 callback 參數是請求成功後所執行的函數名。

下面的例子使用 $.get() 方法從伺服器上的一個文件中取回數據:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鳥教程(runoob.com)</title><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $("button").click(function(){ $.get("/try/ajax/demo_test.php",function(data,status){ alert("數據: " + data + "
狀態: " + status); }); });});</script></head><body><button>發送一個 HTTP GET 請求並獲取返回結果</button></body></html>

$.get() 的第一個參數是我們希望請求的 URL("demo_test.php")。第二個參數是回調函數。第一個回調參數存有被請求頁面的內容,第二個回調參數存有請求的狀態。

(2)jQuery $.post() 方法:

$.post() 方法通過 HTTP POST 請求從伺服器上請求數據,語法如下:

$.post(URL,data,callback);必需的 URL 參數規定您希望請求的 URL。可選的 data 參數規定連同請求發送的數據。可選的 callback 參數是請求成功後所執行的函數名。

下面的例子使用 $.post() 連同請求一起發送數據:

$("button").click(function(){ $.post("/try/ajax/demo_test_post.php", { name:"菜鳥教程", url:"http://www.runoob.com" }, function(data,status){ alert("數據:
" + data + "
狀態: " + status); });});

$.post() 的第一個參數是我們希望請求的 URL ("demo_test_post.php")。

然後我們連同請求(name 和 url)一起發送數據。

"demo_test_post.php" 中的 PHP 腳本讀取這些參數,對它們進行處理,然後返回結果。

第三個參數是回調函數。第一個回調參數存有被請求頁面的內容,而第二個參數存有請求的狀態。

提示: 這個 PHP 文件 ("demo_test_post.php") 類似這樣:

<?php$name = isset($_POST[name]) ? htmlspecialchars($_POST[name]) : ;$url = isset($_POST[url]) ? htmlspecialchars($_POST[url]) : ;echo 網站名: . $name;echo "
";echo URL 地址: .$url;?>

六、jQuery 插件

1、jQuery Validate:

jQuery Validate 插件為表單提供了強大的驗證功能,讓客戶端表單驗證變得更簡單,同時提供了大量的定製選項,滿足應用程序各種需求。該插件捆綁了一套有用的驗證方法,包括 URL 和電子郵件驗證,同時提供了一個用來編寫用戶自定義方法的 API。

下載地址:jQuery Validate 官網

2、jQuery Accordion:

jQuery Accordion 插件用於創建摺疊菜單。它通常與嵌套的列表、定義列表或嵌套的 div 一起使用。選項用於指定結構、激活的元素和定製的動畫。

下載地址:jQuery Accordion 官網

3、jQuery Autocomplete:

jQuery Autocomplete 插件根據用戶輸入值進行搜索和過濾,讓用戶快速找到並從預設值列表中選擇。通過給 Autocomplete 欄位焦點或者在其中輸入字元,插件開始搜索匹配的條目並顯示供選擇的值的列表。通過輸入更多的字元,用戶可以過濾列表以獲得更好的匹配。

下載地址:jQuery Autocomplete 官網

4、jQuery Growl 插件(消息提醒):

允許您很容易地在一個覆蓋層顯示反饋消息。消息會在一段時間後自動消失,不需要單擊"確定"按鈕等。用戶也可以通過移動滑鼠或點擊關閉按鈕加快隱藏信息。

下載地址:jQuery Growl

效果如下:

5、jQuery Password Validation(密碼驗證):

jQuery Password Validation(密碼驗證)插件擴展了 jQuery Validate 插件,提供了兩種組件:

一種評價密碼的相關因素的功能:比如大小寫字母的混合情況、字元(數字、特殊字元)的混合情況、長度、與用戶名的相似度(可選的)。

6、jQuery Prettydate:

為表單提供了強大的驗證功能,讓客戶端表單驗證變得更簡單,同時提供了大量的定製選項,滿足應用程序各種需求。該插件捆綁了一套有用的驗證方法,包括 URL 和電子郵件驗證,同時提供了一個用來編寫用戶自定義方法的 API。

下載地址: jQuery Prettydate Validation(密碼驗證)插件

7、jQuery Tooltip:

jQuery Tooltip 插件取代了原生的工具提示框,讓它們可自定義,您只需要調整它們的內容、位置和外觀即可。

8、jQuery 樹型菜單插件(Treeview):

jQuery Treeview 提供了一個無序靈活的可摺疊的樹形菜單。適用於一些菜單的導航,支持基於 cookie 的持久性菜單。

下載地址:jQuery Treeview Github


推薦閱讀:

為什麼一些大公司願意無償提供CDN服務?
用 js 和 css3 做動畫時,如何判斷所有的圖片元素都載入完了?
AJAX載入了HTML但是HTML裡面的CLICK事件無效?
好書一起讀(133):致敬jQuery

TAG:jQuery |