事件是Web應(yīng)用程序可以檢測到的操作。
jQuery提供了將事件處理程序附加到選擇的簡單方法。
發(fā)生事件時,將執(zhí)行提供的函數(shù)。
以下是示例事件:
網(wǎng)頁加載
點擊一個元素
將鼠標(biāo)移到元素上
提交HTML表格
鍵盤上的按鍵等
在jQuery中,大多數(shù)DOM事件具有等效的jQuery方法。
要將點擊事件分配給頁面上的所有段落,請執(zhí)行以下操作:
$("p").click();
下一步是定義事件發(fā)生時應(yīng)發(fā)生的情況。您必須將一個函數(shù)傳遞給事件:
$("p").click(function(){ // 需要執(zhí)行的動作... });
此示例在單擊頁面時隱藏頁面上的段落:
$("p").click(function(){ $(this).hide(); });測試看看?/?
本示例將一個“changeSize”函數(shù)附加到click事件:
$(document).ready(function(){ $("p").click(changeSize); }); function changeSize() { $(this).animate({fontSize: "+=5px"}); }測試看看?/?
$(document).ready()
jQuery $(document).ready()方法指定在DOM完全加載時要執(zhí)行的函數(shù)。
以下示例在加載DOM時顯示一條消息:
$(document).ready(function(){ $("p").text("現(xiàn)在已經(jīng)加載了DOM,可以對其進行操作."); });測試看看?/?
click()
jQuery click()方法將事件處理程序函數(shù)附加到所選元素。
當(dāng)用戶單擊該元素時,將執(zhí)行該函數(shù):
$("p").click(function(){ $(this).css({"background-color":"#007FFF", "color":"white"}); });測試看看?/?
mouseenter()
jQuery mouseenter()方法將事件處理程序函數(shù)附加到所選元素。
當(dāng)鼠標(biāo)指針進入該元素時,將執(zhí)行該函數(shù):
$("p").mouseenter(function(){ $(this).css("background-color", "yellow"); });測試看看?/?
mouseleave()
jQuery mouseleave()方法將事件處理程序函數(shù)附加到所選元素。
當(dāng)鼠標(biāo)指針離開該元素時,將執(zhí)行該函數(shù):
$("p").mouseleave(function(){ $(this).css("background-color", "lightblue"); });測試看看?/?
mousedown()
jQuery mousedown()方法將事件處理程序函數(shù)附加到所選元素。
當(dāng)用戶在元素上按下鼠標(biāo)按鈕時,將執(zhí)行該函數(shù):
$("p").mousedown(function(){ $(this).after("<p style='color:red;'>按下鼠標(biāo)鍵</p>"); });測試看看?/?
mouseup()
jQuery mouseup()方法將事件處理程序函數(shù)附加到所選元素。
當(dāng)鼠標(biāo)懸停在該元素上時,釋放鼠標(biāo)按鈕,將執(zhí)行該函數(shù):
$("p").mouseup(function(){ $(this).after("<p style='color:green;'>釋放鼠標(biāo)鍵</p>"); });測試看看?/?
keydown()
jQuery keydown()方法將事件處理程序函數(shù)附加到所選元素。
當(dāng)用戶按下鍵盤上的鍵時,將執(zhí)行該函數(shù):
$("input").keydown(function(event){ $(this).css("background-color", "yellow"); $("span").text(event.type); });測試看看?/?
keyup()
jQuery keyup()方法將事件處理程序函數(shù)附加到所選元素。
當(dāng)用戶釋放鍵盤上的鍵時,將執(zhí)行該函數(shù):
$("input").keyup(function(event){ $(this).css("background-color", "lightblue"); $("span").text(event.type); });測試看看?/?
hover()
jQuery hover()方法具有兩個函數(shù),并且是mouseenter()和mouseleave()方法的組合。
下面的示例將鼠標(biāo)指針懸停在上方時更改所有<p>元素的背景顏色:
$("p").hover(function(){ $(this).css("background-color", "yellow"); }, function(){ $(this).css("background-color", "lightblue"); });測試看看?/?
jQuery提供了on()一種方法來響應(yīng)所選元素上的任何事件。
使用on()方法,我們可以為所選元素附加一個或多個事件處理程序。
下面的示例將click事件附加到所有<p>元素:
$("p").on("click", function(){ $(this).css("background-color", "coral"); });測試看看?/?
下面的示例將mouseenter事件附加到所有<p>元素:
$("p").on("mouseenter", function(){ $(this).css("background-color", "coral"); });測試看看?/?
以下示例將多個事件處理程序附加到<div>元素:
$("div").on("mouseenter mouseleave click", function(){ $(this).text(Math.random()); });測試看看?/?
jQuery off() 方法刪除該on()方法附帶的一個或多個事件處理程序。
下面的示例從<div>元素中刪除mousemove事件:
$("button").click(function(){ $("div").off("mousemove"); });測試看看?/?
jQuery的事件系統(tǒng)根據(jù)W3C標(biāo)準(zhǔn)標(biāo)準(zhǔn)化事件對象。
確保將事件對象傳遞給事件處理程序。
每個事件處理函數(shù)都會接收一個事件對象,其中包含許多屬性和方法。
$("div").on("click", function(event){ alert("Event type is " + event.type); alert("Target : " + event.target.innerHTML); });測試看看?/?
下表顯示了所有事件對象的方法和屬性:
方法/屬性 | 描述 |
---|---|
event.currentTarget | 事件冒泡階段中的當(dāng)前DOM元素 |
event.data | 包含綁定當(dāng)前執(zhí)行處理程序時傳遞給事件方法的可選數(shù)據(jù) |
event.delegateTarget | 返回附加當(dāng)前調(diào)用的jQuery事件處理程序的元素 |
event.isDefaultPrevented() | 返回是否event.preventDefault()為事件對象調(diào)用 |
event.isImmediatePropagationStopped() | 返回是否event.stopImmediatePropagation()為事件對象調(diào)用 |
event.isPropagationStopped() | 返回是否event.stopPropagation()為事件對象調(diào)用 |
event.metakey | 表示事件觸發(fā)時是否按下了META鍵 |
event.namespace | 返回觸發(fā)事件時指定的名稱空間 |
event.pageX | 返回鼠標(biāo)相對于文檔左邊緣的位置 |
event.pageY | 返回相對于文檔頂部邊緣的鼠標(biāo)位置 |
event.preventDefault() | 阻止瀏覽器執(zhí)行所選元素的默認(rèn)操作 |
event.relatedTarget | 返回鼠標(biāo)移動時要輸入或退出的元素 |
event.result | 包含由指定事件觸發(fā)的事件處理程序返回的最后一個/上一個值 |
event.stopImmediatePropagation() | 防止其他事件處理程序被調(diào)用 |
event.stopPropagation() | 防止事件使DOM樹冒泡,防止任何父處理程序收到該事件的通知 |
event.target | 返回哪個DOM元素觸發(fā)了事件 |
event.timeStamp | 返回創(chuàng)建事件的時間(相對于紀(jì)元的毫秒數(shù)) |
event.type | 返回觸發(fā)了哪種事件類型 |
event.which | 返回事件按下的鍵盤鍵或鼠標(biāo)按鈕 |
有關(guān)完整的事件參考,請訪問我們的jQuery Events 參考手冊。