jquery 中的trigge函式詳解
trigger()
函式用於在每個匹配元素上觸發指定型別的事件。
此外,你還可以在觸發事件時為事件處理函式傳入額外的引數。
使用該函式可以手動觸發執行元素上繫結的事件處理函式,也會觸發執行該元素的預設行為。
以表單元素<form>為例,使用trigger("submit")
可以觸發該表單繫結的submit事件,也會執行表單submit事件的預設行為——表單提交操作。
根據網友 @飛揚 的反饋,連結標籤<a>的trigger("click")
是一個特例,不會觸發連結click事件的預設行為——跳轉到對應連結的操作,點此檢視相關詳情。
從jQuery 1.3開始,trigger()
函式觸發的事件還支援事件冒泡,可以冒泡傳遞到DOM樹上。
該函式屬於jQuery
物件(例項)。
語法
trigger()
函式主要有以下兩種形式的用法:
用法一:
jQueryObject.trigger( events [, extraArguments ] )
在每個匹配元素上觸發指定型別(events
)的事件,並可為事件處理函式傳入額外的引數(extraArguments
)。
用法二:jQuery 1.3 新增支援該用法。
jQueryObject.trigger( eventObject [, extraArguments ] )
為指定事件處理函式傳入的Event物件(eventObject
),用於觸發執行對應的事件處理函式,並可為事件處理函式傳入額外的引數(extraArguments
)。
引數
引數 | 描述 |
---|---|
events | String型別指定的事件型別和可選的名稱空間,例如"click"、 "focus"、 "keydown.myPlugin"。 |
extraArguments | 可選/Object型別為事件處理函式傳入的額外引數。如果要傳入多個引數,請以陣列方式傳入。 |
eventObject | Object型別一個Event物件,用於觸發傳入該物件的事件處理函式。 |
trigger()
函式會為觸發執行的事件處理函式傳入一個預設引數,也就是表示當前事件的Event物件。
引數extraArguments
用於為事件處理函式傳入更多額外的引數。如果extraArguments
是陣列形式,則每個元素都將充當函式的引數。
返回值
trigger()
函式的返回值為jQuery型別,返回當前jQuery物件本身。
示例&說明
請參考下面這段初始HTML程式碼:
<input id="btn1" type="button" value="點選1" />
<input id="btn2" type="button" value="點選2" />
<a id="a1" href="#">CodePlayer</a>
<div id="log"></div>
首先,我們為上述button和<a>元素繫結事件,然後使用trigger()
函式直接觸發事件,相應的程式碼如下:
var $log = $("#log"); function handler( event, arg1, arg2 ){ var html = '<br>觸發元素#' + this.id + '的[' + event.type +']事件,額外的函式引數為:' + arg1 + ', ' + arg2; $log.append( html ); } var $buttons = $(":button"); // 為所有button元素的click事件繫結事件處理函式 $buttons.bind( "click", handler ); // 為所有a元素的click、mouseover、mouseleave事件繫結事件處理函式 $("a").bind( "click mouseover mouseleave", handler ); // 觸發所有button的click事件 $buttons.trigger("click"); /*(追加文字) 觸發元素#btn1的[click]事件,額外的函式引數為:undefined, undefined 觸發元素#btn2的[click]事件,額外的函式引數為:undefined, undefined */ $("#btn1").trigger("click", "CodePlayer"); /*(追加文字) 觸發元素#btn1的[click]事件,額外的函式引數為:CodePlayer, undefined */ // arg1 = "張三", arg2 = 20 $("a").trigger("mouseover", ["張三", 20 ] ); /*(追加文字) 觸發元素#a1的[mouseover]事件,額外的函式引數為:張三, 20 */ $("a").trigger("mouseleave", { name: "張三", age: 18 } ); /*(追加文字) 觸發元素#a1的[mouseleave]事件,額外的函式引數為:[object Object], undefined */
執行程式碼(以下程式碼請自行復制到演示頁面執行)
trigger()
函式還可以根據傳入事件處理函式的Event物件,來觸發對應的事件。
var $btn1 = $("#btn1"); // 為btn1元素的click事件繫結事件處理函式 $btn1.bind( "click", function(event){ alert("click1"); }); // 為btn1元素的click事件繫結事件處理函式 // 如果傳入了一個有效的額外引數,則再次觸發click $btn1.bind( "click", function(event, arg1){ alert("click2"); if(arg1) $(this).trigger( event ); }); // $btn1.trigger( "click" ); // 呼叫一次click1、呼叫一次click2 $btn1.trigger( "click", true ); // 呼叫兩次click1、呼叫兩次click2
此外,trigger()
函式還可以只觸發包含指定定名稱空間的事件(1.4.3+才支援名稱空間)。
function A( event ){ alert( 'A' ); } function B( event ){ alert( 'B' ); } function C( event ){ alert( 'C' ); } var $btn1 = $("#btn1"); // 為btn1元素的click事件繫結事件處理函式 $btn1.bind( "click.foo.bar", A ); $btn1.bind( "click.test.foo", B ); $btn1.bind( "click.test", C ); // 觸發btn1的click事件,不限定名稱空間 $btn1.trigger("click"); // 觸發A、B、C // 觸發btn1的包含名稱空間foo的click事件 $btn1.trigger("click.foo"); // 觸發A、B // 觸發btn1的包含名稱空間test的click事件 $btn1.trigger("click.test"); // 觸發B、C // 觸發btn1的同時包含名稱空間foo和test的click事件 $btn1.trigger("click.foo.test"); // 觸發B
相關文章
- jquery.ajaxSetup()函式詳解jQuery函式
- TypeScript中的函式詳解TypeScript函式
- Oracle中pivot函式詳解Oracle函式
- Python中Numpy函式詳解Python函式
- MySQL中count(*)函式原理詳解MySql函式
- Oracle中的正規表示式(及函式)詳解Oracle函式
- OpenCV中的findContours函式引數詳解OpenCV函式
- PyTorch 中 torch.matmul() 函式的文件詳解PyTorch函式
- 詳解 JS 中 new 呼叫函式原理JS函式
- PHP中debug_backtrace函式詳解PHP函式
- jQuery中的Deferred詳解和使用jQuery
- 詳解MySQL中的SQRT函式的使用方法MySql函式
- C++中建構函式,拷貝建構函式和賦值函式的詳解C++函式賦值
- SetupDiGetClassDevs函式詳解dev函式
- 詳解Java函式式介面Java函式
- 閉包詳解二:JavaScript中的高階函式JavaScript函式
- Python中的56個內建函式詳解(七)Python函式
- jQuery操作iframe中js函式的方法小結jQueryJS函式
- jQuery中的Deferred-詳解和使用jQuery
- 3.11 solidity 函式詳解Solid函式
- mysql常用函式詳解MySql函式
- python socket函式詳解Python函式
- fcntl函式用法詳解函式
- 建構函式詳解函式
- 箭頭函式詳解函式
- 函式引數詳解函式
- 05_jQuery函式的使用jQuery函式
- ORALCE函式:LAG()和LEAD() 分析函式詳解函式
- 詳解C++中的多型和虛擬函式C++多型函式
- 【多程式】Linux中fork()函式詳解|多程式Linux函式
- 函式詳解 | VLOOKUP 函式:最為人熟知的偵探函式
- SQL中常用的字串LEFT函式和RIGHT函式詳解!SQL字串函式
- 詳解常見的損失函式函式
- 詳解SQL操作的視窗函式SQL函式
- JQuery中$.ajax()方法引數詳解jQuery
- Oracle分析函式之開窗函式over()詳解Oracle函式
- js封裝函式來 解釋jQuery的執行原理JS封裝函式jQuery
- 箭頭函式this指向詳解函式
- PHP BC Math 函式詳解PHP函式