Jquery教程css
結論html
因爲 jQuery 是爲處理 HTML 事件而特別設計的,那麼當您遵循如下原則時,您的代碼會更恰當且更易維護:jquery
文檔就緒函數瀏覽器
您也許已經注意到在咱們的實例中的全部 jQuery 函數位於一個 document ready 函數中:app
$(document).ready(function(){dom
--- jQuery functions go here ----ide
});函數
這是爲了防止文檔在徹底加載(就緒)以前運行 jQuery 代碼。動畫
若是在文檔沒有徹底加載以前就運行函數,操做可能失敗。下面是兩個具體的例子:this
經過 jQuery,您能夠把動做/方法連接起來。
Chaining 容許咱們在一條語句中容許多個 jQuery 方法(在相同的元素上)。
jQuery 方法連接
直到如今,咱們都是一次寫一條 jQuery 語句(一條接着另外一條)。
不過,有一種名爲連接(chaining)的技術,容許咱們在相同的元素上運行多條 jQuery 命令,一條接着另外一條。
提示:這樣的話,瀏覽器就沒必要屢次查找相同的元素。
如需連接一個動做,您只需簡單地把該動做追加到以前的動做上。
例子 1
下面的例子把 css(), slideUp(), and slideDown() 連接在一塊兒。"p1" 元素首先會變爲紅色,而後向上滑動,而後向下滑動:
$("#p1").css("color","red").slideUp(2000).slideDown(2000);
若是須要,咱們也能夠添加多個方法調用。
提示:當進行連接時,代碼行會變得不好。不過,jQuery 在語法上不是很嚴格;您能夠按照但願的格式來寫,包含折行和縮進。
例子 2
這樣寫也能夠運行:
$("#p1").css("color","red")
.slideUp(2000)
.slideDown(2000);
jQuery 會拋掉多餘的空格,並按照一行長代碼來執行上面的代碼行。
jQuery 擁有可操做 HTML 元素和屬性的強大方法。
jQuery DOM 操做
jQuery 中很是重要的部分,就是操做 DOM 的能力。
jQuery 提供一系列與 DOM 相關的方法,這使訪問和操做元素和屬性變得很容易。
提示:DOM = Document Object Model(文檔對象模型)
DOM 定義訪問 HTML 和 XML 文檔的標準:
「W3C 文檔對象模型獨立於平臺和語言的界面,容許程序和腳本動態訪問和更新文檔的內容、結構以及樣式。」
得到內容 - text()、html() 以及 val()
三個簡單實用的用於 DOM 操做的 jQuery 方法:
下面的例子演示如何經過 jQuery text() 和 html() 方法來得到內容:
實例
$("#btn1").click(function(){
alert("Text: " + $("#test").text());
});
$("#btn2").click(function(){
alert("HTML: " + $("#test").html());
});
下面的例子演示如何經過 jQuery val() 方法得到輸入字段的值:
實例
$("#btn1").click(function(){
alert("Value: " + $("#test").val());
});
獲取屬性 - attr()
jQuery attr() 方法用於獲取屬性值。
下面的例子演示如何得到連接中 href 屬性的值:
實例
$("button").click(function(){
alert($("#w3s").attr("href"));
});
下一章會講解如何設置(改變)內容和屬性值。
jQuery( selector, [ context ] )
該語法有如下幾種用法:
用法 1 :設置選擇器環境
語法
jQuery(selector, [context])
默認狀況下,選擇器從文檔根部對 DOM 進行搜索。不過,能夠爲 $() 設置可選的 context 參數。
例如,若是咱們但願在一個 callback 中搜索一個元素,能夠限定下面的搜索:
實例
$("div.foo").click(function() {
$("span", this).addClass("bar");
});
因爲咱們已經將 span 選擇器限定到 this 這個環境中,只有被點擊元素中的 span 會獲得附加的 class。
在內部,選擇器環境是經過 .find() 方法實現的,所以 $("span", this) 等價於 $(this).find("span")。
jQuery 的核心功能都是經過這個函數實現的。jQuery中的一切都基於這個函數,或者說都是在以某種方式使用這個函數。這個函數最基本的用法就是向它傳遞一個表達式(一般由 CSS 選擇器組成),而後根據這個表達式來查找全部匹配的元素。
默認狀況下, 若是沒有指定 context 參數,$() 將在當前的 HTML document 中查找 DOM 元素;若是指定了 context 參數,如一個 DOM 元素集或 jQuery 對象,那就會在這個 context 中查找。在 jQuery 1.3.2 之後,其返回的元素順序等同於在 context 中出現的前後順序。
用法 2 :使用 DOM 元素
語法
jQuery(element)
該函數容許咱們經過使用以其餘方式找到的 DOM 元素來建立 jQuery 對象。該功能一般的用法是,對已經經過 this 關鍵字傳遞到 callback 函數的元素調用 jQuery 的方法:
實例
$("div.foo").click(function() {
$(this).slideUp();
});
此例會在元素被點擊時使用滑動動畫對其進行隱藏。因爲處理程序接受的 this 關鍵詞中的被點擊項目是純的 DOM 元素,所以在對其調用 jQuery 的方法以前,必須用 jQuery 對象包裝該元素。
這個函數也能夠接收 XML 文檔和 Window 對象(雖然它們不是 DOM 元素)做爲有效的參數。
當 XML 數據從 Ajax 調用中返回後,咱們可使用 $() 函數經過 jQuery 對象包裝該數據。一旦完成,咱們就可使用 .find() 和其餘 DOM 遍歷方法來取回 XML 結構中單個元素。
用法 3 :克隆 jQuery 對象
語法
jQuery(jQuery object)
當以參數的形式向 $() 函數傳遞 jQuery 對象後,會建立一個該對象的副本。與初始對象同樣,新的 jQuery 對象引用相同的 DOM 元素。
用法 4 :返回空的集合
語法
jQuery()
對於 jQuery 1.4,調用無參數的 jQuery() 方法會返回空的 jQuery 集合。在以前版本的 jQuery 中,這樣會返回包含 document 節點的集合。
jQuery( html, [ ownerDocument ] )
該語法有如下幾種用法:
用法 1 :建立新的元素
語法
jQuery(html,[ownerDocument])
你能夠傳遞一個手寫的 HTML 字符串,或者由某些模板引擎或插件建立的字符串,也能夠是經過 AJAX 加載過來的字符串。可是在你建立 input 元素的時會有限制,能夠參考第二個示例。
固然這個字符串能夠包含斜槓 (好比一個圖像地址),還有反斜槓。當你建立單個元素時,請使用閉合標籤或 XHTML 格式。例如,建立一個 span ,能夠用 $("<span/>") 或 $("<span></span>") ,但不推薦 $("<span>")。在 jQuery 中,這個語法等同於 $(document.createElement("span"))。
若是以參數的形式將字符串傳遞給 $(),jQuery 會檢查字符串是不是 HTML (好比,字符串某些位置存在標籤)。若是不是,則把字符串解釋爲選擇器表達式,請見上面的講解。但若是字符串是 HTML 片斷,則 jQuery 試圖建立由該 HTML 片斷描述的 DOM 元素。而後會建立並返回一個引用這些 DOM 元素的 jQuery 對象:
實例
$("<p id="test">My <em>new</em> text</p>").appendTo("body");
若是 HTML 片斷比不含屬性的簡單標籤更復雜,如同上面例子中的 HTML,那麼元素實際的建立過程是由瀏覽器的 innerHTML 機制完成的。具體地講,jQuery 會建立新的 <div> 元素,而後爲傳入的 HTML 片斷設置元素的 innerHTML 屬性。當參數只是簡單的標籤,好比$("<img />") 或 $("<a></a>"),jQuery 會經過內生的 JavaScript createElement() 函數來建立元素。
要確保跨平臺兼容性,片斷的結構必須良好。可以包含其餘元素的標籤必須成對出現(帶有關閉標籤):
$("<a href="http://jquery.com"></a>");
不過,jQuery 也容許相似 XML 的標籤語法:
$("<a/>");
沒法包含其餘元素的標籤能夠關閉,也能夠不關閉:
$("<img />");
$("<input>");
用法 2 :設置屬性和事件
語法
jQuery(html,props)
對於 jQuery 1.4,咱們能夠向第二個參數傳遞一個屬性映射。該參數接受可以傳遞給 .attr() 方法的屬性的超集。此外,能夠傳遞任意的事件類型,並能夠調用下面的 jQuery 方法:val, css, html, text, data, width, height, or offset.
注意,Internet Explorer 不容許你建立 input 元素並改變其類型;您必須使用例如 "<input type="checkbox" />" 來規定類型。
實例
建立一個 <input> 元素,同時設定 type 屬性、屬性值,以及一些事件。
$("<input>", {
type: "text",
val: "Test",
focusin: function() {
$(this).addClass("active");
},
focusout: function() {
$(this).removeClass("active");
}
}).appendTo("form");
jQuery( callback )
容許你綁定一個在 DOM 文檔載入完成後執行的函數。
該函數的做用如同 $(document).ready() 同樣,只不過用這個函數時,須要把頁面中全部須要在 DOM 加載完成時執行的其餘 $() 操做符都包裝到其中來。儘管從技術上來講,這個函數是可連接的,但真正以這種方式連接的狀況並很少。
例子
當DOM加載完成後,執行其中的函數:
$(function(){ // 文檔就緒 });