頁面加載時觸發ready()事件
ready()
事件類似于onLoad()
事件,但前者只要頁面的DOM結構加載后便觸發,而后者必須在頁面全部元素加載成功才觸發,ready()
可以寫多個,按順序執行。此外,下列寫法是相等的:
$(document).ready(function(){})
等價于$(function(){});
例如,當觸發頁面的ready()
事件時,在<div>元素中顯示一句話。如下圖所示:
在瀏覽器中顯示的效果:
從圖中可以看出,當頁面的DOM框架完成加載后,便觸發ready()
事件,在該事件中,通過id號為“tip”的元素,調用html()
方法在頁面中顯示一段字符。
使用bind()方法綁定元素的事件
bind()
方法綁定元素的事件非常方便,綁定前,需要知道被綁定的元素名,綁定的事件名稱,事件中執行的函數內容就可以,它的綁定格式如下:
$(selector).bind(event,[data] function)
參數event為事件名稱,多個事件名稱用空格隔開,function為事件執行的函數。
例如,綁定按鈕的單擊事件,單擊按鈕時,該按鈕變為不可用。如下圖所示:
在瀏覽器中顯示的效果:
可以看出,由于使用bind()
方法,綁定了按鈕的單擊事件,在該事件中將按鈕本身的“disabled”屬性值設為“true”,表示不可用,當點擊時觸該事件。
使用bind()方法綁定元素的事件
bind()
方法綁定元素的事件非常方便,綁定前,需要知道被綁定的元素名,綁定的事件名稱,事件中執行的函數內容就可以,它的綁定格式如下:
$(selector).bind(event,[data] function)
參數event為事件名稱,多個事件名稱用空格隔開,function為事件執行的函數。
例如,綁定按鈕的單擊事件,單擊按鈕時,該按鈕變為不可用。如下圖所示:
在瀏覽器中顯示的效果:
可以看出,由于使用bind()
方法,綁定了按鈕的單擊事件,在該事件中將按鈕本身的“disabled”屬性值設為“true”,表示不可用,當點擊時觸該事件。
使用hover()方法切換事件
hover()
方法的功能是當鼠標移到所選元素上時,執行方法中的第一個函數,鼠標移出時,執行方法中的第二個函數,實現事件的切實效果,調用格式如下:
$(selector).hover(over,out);
over參數為移到所選元素上觸發的函數,out參數為移出元素時觸發的函數。
例如,當鼠標移到<div>元素上時,元素中的字體變成金黃色,如下圖所示:
在瀏覽器中顯示的效果:
從圖中可以看出,使用hover()
方法執行兩個函數,當鼠標移在元素上時調用addClass()
方法增加一個樣式,移出時,調用removeClass()
方法移除該樣式。
使用toggle()方法綁定多個函數
toggle()
方法可以在元素的click事件中綁定兩個或兩個以上的函數,同時,它還可以實現元素的隱藏與顯示的切換,綁定多個函數的調用格式如下:
$(selector).toggle(fun1(),fun2(),funN(),...)
其中,fun1,fun2就是多個函數的名稱
例如,使用toggle()
方法,當每次點擊<div>元素時,顯示不同內容,如下圖所示:
在瀏覽器中顯示的效果:
從圖中可以看出,每次點擊<div>元素時,都依次執行toggle()
方法綁定的函數,當執行到最后一個函數時,再次點擊將又返回執行第一個函數。
注意:toggle()方法支持目前主流穩定的jQuery版本1.8.2,在1.9.0之后的版本是不支持的。
使用unbind()方法移除元素綁定的事件
unbind()
方法可以移除元素已綁定的事件,它的調用格式如下:
$(selector).unbind(event,fun)
其中參數event表示需要移除的事件名稱,多個事件名用空格隔開,fun參數為事件執行時調用的函數名稱。
例如,點擊按鈕時,使用unbind()
方法移除<div>元素中已綁定的“dblclick”事件,如下圖所示:
在瀏覽器中顯示的效果:
從圖中可以看出,當使用unbind()
方法移除已綁定的“dblclick”事件時,再次雙擊<div>元素,樣式和文字都沒有任何變化,表明移除事件成功。
如果沒有規定參數,unbind() 方法會刪除指定元素的所有事件處理程序。
使用one()方法綁定元素的一次性事件
one()
方法可以綁定元素任何有效的事件,但這種方法綁定的事件只會觸發一次,它的調用格式如下:
$(selector).one(event,[data],fun)
參數event為事件名稱,data為觸發事件時攜帶的數據,fun為觸發該事件時執行的函數。
例如,使用one方法綁定<div>元素的單擊事件,在事件執行的函數中,累計執行的次數,并將該次數顯示在頁面中,如下圖所示:
在瀏覽器中顯示的效果:
從圖中可以看出,由于使用了one()
方法綁定<div>元素的單擊事件,因為事件函數只能執行一次,執行完成后,無論如何單擊,都不再觸發。
調用trigger()方法手動觸發指定的事件
trigger()
方法可以直接手動觸發元素指定的事件,這些事件可以是元素自帶事件,也可以是自定義的事件,總之,該事件必須能執行,它的調用格式為:
$(selector).trigger(event)
其中event參數為需要手動觸發的事件名稱。
例如,當頁面加載時,手動觸發文本輸入框的“select”事件,使文本框的默認值處于全部被選中的狀態,如下圖所示:
在瀏覽器中顯示的效果:
從圖中可以看出,由于文本輸入框調用trigger()
方法觸發了“select”事件,因此,當頁面加載完成后,文本框中的默認值處于全部被選中的狀態。
文本框的focus和blur事件
focus事件在元素獲取焦點時觸發,如點擊文本框時,觸發該事件;而blur事件則在元素丟失焦點時觸發,如點擊除文本框的任何元素,都會觸發該事件。
例如,在觸發文本框的“focus”事件時,<div>元素顯示提示內容,如下圖所示:
在瀏覽器中顯示的效果:
從圖中可以看出,當點擊文本框時,觸發文本框的“focus”事件,在該事件中,頁面中的<div>元素顯示提示信息。
下拉列表框的change事件
當一個元素的值發生變化時,將會觸發change
事件,例如在選擇下拉列表框中的選項時,就會觸change
事件。
例如,當在頁面選擇下拉列表框中的選項時,將在<div>元素中顯示所選擇的選項內容,如下圖所示:
在瀏覽器中顯示的效果:
從圖中可以看出,由于使用bind()
方法綁定了下拉列表的“change”事件,因此,當選擇列表中的選項時,在<div>元素中顯示所選擇的選項內容。
調用live()方法綁定元素的事件
與bind()
方法相同,live()
方法與可以綁定元素的可執行事件,除此相同功能之外,live()
方法還可以綁定動態元素,即使用代碼添加的元素事件,格式如下:
$(selector).live(event,[data],fun)
參數event為事件名稱,data為觸發事件時攜帶的數據,fun為觸發該事件時執行的函數。
例如,使用live()
方法綁定,頁面中按鈕元素的單擊事件,而這個按鈕是通過追加的方式添加至頁面的。如下圖所示:
在瀏覽器中顯示的效果:
從圖中可以看出,雖然按鈕元素是在事件綁定聲明之后,并且是通過追加的方式添加至頁面的,但由于使用的是live()
方法綁定元素的事件,因此,仍然生效。
注意:從 jQuery 1.7 開始,不再建議使用 .live() 方法。1.9不支持.live(),本節代碼編輯器里的js引用版本改為了1.8。