當前位置:才華齋>設計>網頁設計>

jQuery常用技巧及常用方法

網頁設計 閱讀(6.46K)

1、關於頁面元素的引用

jQuery常用技巧及常用方法

通過jQuery的$()引用元素包括通過id、class、元素名以及元素的層級關係及dom或者xpath條件等方法,且返回的物件為jQuery物件(集合物件),不能直接呼叫dom定義的方法。

2、jQuery物件與dom物件的轉換

只有jQuery物件才能使用jQuery定義的方法。注意dom物件和jQuery物件是有區別的,呼叫方法時要注意操作的是dom物件還是 jQuery物件。

普通的dom物件一般可以通過$()轉換成jQuery物件。

如:$(lementById("msg"))則為jQuery物件,可以使用jQuery的方法。

由於jQuery物件本身是一個集合。所以如果jQuery物件要轉換為dom物件則必須取出其中的某一項,一般可通過索引取出。

如:$("#msg")[0],$("div")(1)[0],$("div")()[1],$("td")[5]這些都是dom物件,可以使用dom中的方法,但不能再使用Jquery的方法。

以下幾種寫法都是正確的:

3、如何獲取jQuery集合的某一項

對於獲取的元素集合,獲取其中的某一項(通過索引指定)可以使用eq或get(n)方法或者索引號獲取,要注意,eq返回的是jQuery物件,而 get(n)和索引返回的是dom元素物件。對於jQuery物件只能使用jQuery的方法,而dom物件只能使用dom的方法,如要獲取第三個

元素的內容。有如下兩種方法:

$("div")(2)(); //呼叫jQuery物件的方法

$("div")(2)rHTML; //呼叫dom的方法屬性

4、同一函式實現set和get

Jquery中的很多方法都是如此,主要包括如下幾個:

$("#msg")(); //返回id為msg的元素節點的html內容。

//將"new content" 作為html串寫入id為msg的元素節點內容中,頁面顯示粗體的new content

$("#msg")(); //返回id為msg的元素節點的文字內容。

//將"new content" 作為普通文字串寫入id為msg的元素節點內容中,頁面顯示new content

$("#msg")ht(); //返回id為msg的元素的高度

$("#msg")ht("300″); //將id為msg的元素的高度設為300

$("#msg")h(); //返回id為msg的元素的寬度

$("#msg")h("300″); //將id為msg的元素的寬度設為300

$("input")("); //返回表單輸入框的value值

$("input")("test"); //將表單輸入框的value值設為test

$("#msg")k(); //觸發id為msg的元素的單擊事件

$("#msg")k(fn); //為id為msg的元素單擊事件新增函式

同樣blur,focus,select,submit事件都可以有著兩種呼叫方法

5、集合處理功能

對於jQuery返回的集合內容無需我們自己迴圈遍歷並對每個物件分別做處理,jQuery已經為我們提供的很方便的方法進行集合的處理。

包括兩種形式:

//為索引分別為0,1,2的p元素分別設定不同的字型顏色。

//實現表格的隔行換色效果

//為每個p元素增加了click事件,單擊某個p元素則彈出其內容

6、擴充套件我們需要的功能

}); //為jQuery擴充套件了min,max兩個方法

使用擴充套件的方法(通過"$.方法名"呼叫):

7、支援方法的連寫

所謂連寫,即可以對一個jQuery物件連續呼叫各種不同的方法。

例如:

8、操作元素的樣式

主要包括以下幾種方式:

$("#msg")("background"); //返回元素的背景顏色

$("#msg")("background","#ccc") //設定元素背景為灰色

$("#msg")ht(300); $("#msg")h("200″); //設定寬高

$("#msg")({ color: "red", background: "blue" });//以名值對的形式設定樣式

$("#msg")lass("select"); //為元素增加名稱為select的class

$("#msg")veClass("select"); //刪除元素名稱為select的class

$("#msg")leClass("select"); //如果存在(不存在)就刪除(新增)名稱為select的class

9、完善的事件處理功能

Jquery已經為我們提供了各種事件處理方法,我們無需在html元素上直接寫事件,而可以直接為通過jQuery獲取的物件新增事件。

如:

$("#msg")k(function(){}) //為元素添加了單擊事件

//為三個不同的p元素單擊事件分別設定不同的處理

jQuery中幾個自定義的事件:

(1)hover(fn1,fn2):一個模仿懸停事件(滑鼠移動到一個物件上面及移出這個物件)的方法。當滑鼠移動到一個匹配的元素上面時,會觸發指定的第一個函式。當滑鼠移出這個元素時,會觸發指定的第二個函式。

//當滑鼠放在表格的某行上時將class置為over,離開時置為out。

(2)ready(fn):當DOM載入就緒可以查詢及操縱時繫結一個要執行的函式。

//頁面載入完畢提示"Load Success",相當於onload事件。與$(fn)等價

(3)toggle(evenFn,oddFn): 每次點選時切換要呼叫的函式。如果點選了一個匹配的元素,則觸發指定的第一個函式,當再次點選同一元素時,則觸發指定的第二個函式。隨後的每次點選都重複對這兩個函式的輪番呼叫。

//每次點選時輪換新增和刪除名為selected的class。

(4)trigger(eventtype): 在每一個匹配的元素上觸發某類事件。

例如:

$("p")ger("click"); //觸發所有p元素的click事件

(5)bind(eventtype,fn),unbind(eventtype): 事件的繫結與反繫結

從每一個匹配的元素中(新增)刪除繫結的事件。

例如:

$("p")("click", function(){());}); //為每個p元素新增單擊事件

$("p")nd(); //刪除所有p元素上的所有事件

$("p")nd("click") //刪除所有p元素上的單擊事件

10、幾個實用特效功能

其中toggle()和slidetoggle()方法提供了狀態切換功能。

如toggle()方法包括了hide()和show()方法。

slideToggle()方法包括了slideDown()和slideUp方法。

11、幾個有用的jQuery方法

$ser.瀏覽器型別:檢測瀏覽器型別。有效引數:safari, opera, msie, mozilla。如檢測是否ie:$,是ie瀏覽器則返回true。

$(obj, fn):通用的迭代函式。可用於近似地迭代物件和陣列(代替迴圈)。

等價於:

也可以處理json資料,如

結果為:

$nd(target,prop1,propN):用一個或多個其他物件來擴充套件一個物件,返回這個被擴充套件的物件。這是jQuery實現的繼承方式。

如:

//合併settings和options,並將合併結果返回settings中,相當於options繼承setting並將繼承結果儲存在 setting中。

//合併defaults和options,並將合併結果返回到setting中而不覆蓋default內容。

可以有多個引數(合併多項並返回)

$(array, fn):陣列對映。把一個數組中的專案(處理轉換後)儲存到到另一個新陣列中,並返回生成的新陣列。

如:

tempArr內容為:[4,5,6]

tempArr內容為:[2,3]

$e(arr1,arr2):合併兩個陣列並刪除其中重複的專案。

如:$e( [0,1,2], [2,3,4] ) //返回[0,1,2,3,4]

$(str):刪除字串兩端的空白字元。

如:$(" hello, how are you? "); //返回"hello,how are you? "

12、解決自定義方法或其他類庫與jQuery的衝突

很多時候我們自己定義了$(id)方法來獲取一個元素,或者其他的一些js類庫如prototype也都定義了$方法,如果同時把這些內容放在一起就會引起變數方法定義衝突,Jquery對此專門提供了方法用於解決此問題。

使用jQuery中的nflict();方法即可把變數$的控制權讓渡給第一個實現它的`那個庫或之前自定義的$方法。之後應用 Jquery的時候只要將所有的$換成jQuery即可,如原來引用物件方法$("#msg")改為jQuery("#msg")。

如:

// 開始使用jQuery

// 使用其他庫的 $()

jQuery常用方法列表:

Attribute:

$(p)lass(css中定義的樣式型別); 給某個元素新增樣式

$(img).attr({src:test.jpg,alt:test Image}); 給某個元素新增屬性/值,引數是map

$(img).attr(src,test.jpg); 給某個元素新增屬性/值

$(img)(title, function() { return }); 給某個元素新增屬性/值

$(元素名稱)(); 獲得該元素內的內容(元素,文字等)

$(元素名稱)(new stuff); 給某元素設定內容

$(元素名稱)veAttr(屬性名稱) 給某元素刪除指定的屬性以及該屬性的值

$(元素名稱)veClass(class) 給某元素刪除指定的樣式

$(元素名稱)(); 獲得該元素的文字

$(元素名稱)(value); 設定該元素的文字值為value

$(元素名稱)leClass(class) 當元素存在引數中的樣式的時候取消,如果不存在就設定此樣式

$(input元素名稱)(); 獲取input元素的值

$(input元素名稱)(value); 設定input元素的值為value

Manipulation:

$(元素名稱)r(content); 在匹配元素後面新增內容

$(元素名稱)nd(content); 將content作為元素的內容插入到該元素的後面

$(元素名稱)ndTo(content); 在content後接元素

$(元素名稱)re(content); 與after方法相反

$(元素名稱)e(布林表示式) 當布林表示式為真時,克隆元素(無參時,當作true處理)

$(元素名稱)y() 將該元素的內容設定為空

$(元素名稱)r(content); 將該元素插入到content之後

$(元素名稱)re(content); 將該元素插入到content之前

$(元素)end(content); 將content作為該元素的一部分,放到該元素的最前面

$(元素)endTo(content); 將該元素作為content的一部分,放content的最前面

$(元素)ve(); 刪除所有的指定元素

$(元素)ve(exp); 刪除所有含有exp的元素

$(元素)(html); 用html來包圍該元素

$(元素)(element); 用element來包圍該元素

Traversing:

Core:

$(html)ndTo(body) 相當於在body中寫了一段html程式碼

$(elems) 獲得DOM上的某個元素

$(function(){..}); 執行一個函式

$(div > p)(border, 1px solid gray); 查詢所有div的子節點p,新增樣式

$(input:radio, s[0]) 在當前頁面的第一個表單中查詢所有的單選按鈕

$nd(prop) prop是一個jQuery物件,

舉例:

jQuery( expression, [context] ) $( expression, [context]); 在預設情況下,$()查詢的是當前HTML文件中的DOM元素。

each( callback ) 以每一個匹配的元素作為上下文來執行一個函式

舉例:1

舉例:2

ready(fn); $(document)y()注意在body中沒有onload事件,否則該函式不能執行。在每個頁面中可以

有很多個函式被載入執行,按照fn的順序來執行。

bind( type, [data], fn ) 為每一個匹配元素的特定事件(像click)繫結一個或多個事件處理器函式。可能的事件屬性有:blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove,

one( type, [data], fn ) 為每一個匹配元素的特定事件(像click)繫結一個或多個事件處理器函式。在每個對

象上,這個事件處理函式只會被執行一次。其他規則與bind()函式相同。

trigger( type, [data] ) 在每一個匹配的元素上觸發某類事件。

triggerHandler( type, [data] ) 這一特定方法會觸發一個元素上特定的事件(指定一個事件型別),同時取消瀏覽器對此事件的預設行動

unbind( [type], [data] ) 反繫結,從每一個匹配的元素中刪除繫結的事件。

$(p)nd() 移除所有段落上的所有繫結的事件

$(p)nd( click ) 移除所有段落上的click事件

hover( over, out ) over,out都是方法, 當滑鼠移動到一個匹配的元素上面時,會觸發指定的第一個函式。當滑鼠移出這個元素時,會觸發指定的第二個函式。

toggle( fn, fn ) 如果點選了一個匹配的元素,則觸發指定的第一個函式,當再次點選同一元素時,則觸發指定的第二個函式。

元素事件列表說明

注:不帶引數的函式,其引數為可選的 fn。jQuery不支援form元素的reset事件。

事件 描述 支援元素或物件

blur( ) 元素失去焦點 a, input, textarea, button, select, label, map, area

change( ) 使用者改變域的內容 input, textarea, select

click( ) 滑鼠點選某個物件 幾乎所有元素

dblclick( ) 滑鼠雙擊某個物件 幾乎所有元素

error( ) 當載入文件或影象時發生某個錯誤 window, img

focus( ) 元素獲得焦點 a, input, textarea, button, select, label, map, area

keydown( ) 某個鍵盤的鍵被按下 幾乎所有元素

keypress( ) 某個鍵盤的鍵被按下或按住 幾乎所有元素

keyup( ) 某個鍵盤的鍵被鬆開 幾乎所有元素

load( fn ) 某個頁面或影象被完成載入 window, img

mousedown( fn ) 某個滑鼠按鍵被按下 幾乎所有元素

mousemove( fn ) 滑鼠被移動 幾乎所有元素

mouseout( fn ) 滑鼠從某元素移開 幾乎所有元素

mouseover( fn ) 滑鼠被移到某元素之上 幾乎所有元素

mouseup( fn ) 某個滑鼠按鍵被鬆開 幾乎所有元素

resize( fn ) 視窗或框架被調整尺寸 window, iframe, frame

scroll( fn ) 滾動文件的可視部分時 window

select( ) 文字被選定 document, input, textarea

submit( ) 提交按鈕被點選 form

unload( fn ) 使用者退出頁面 window

JQuery Ajax 方法說明:

load( url, [data], [callback] ) 裝入一個遠端HTML內容到一個DOM結點。

$(#feeds)(); 將檔案載入到id為feeds的div中

( url, [data], [callback] ) 使用GET請求一個頁面。

SON( url, [data], [callback] ) 使用GET請求JSON資料。

cript( url, [callback] ) 使用GET請求javascript檔案並執行。

( url, [data], [callback], [type] ) 使用POST請求一個頁面。

ajaxComplete( callback ) 當一個AJAX請求結束後,執行一個函式。這是一個Ajax事件

ajaxError( callback ) 當一個AJAX請求失敗後,執行一個函式。這是一個Ajax事件