[英]jQuery programmatically trigger events
什么所有事件都可以使用 jQuery 以編程方式觸發? 當一個人使用 jQuery Vs 進行事件觸發時,是否有任何重要的區別需要記住?
每個事件都可以以編程方式觸發,只需使用它的無回調版本即可。
例子:
$('#button').click(function() { alert('event hanlder'); });
$('#button').click(); // generate the event
關於您的第二個問題,本機和 jQuery 事件處理程序之間應該沒有區別。
一件很巧妙的事情是 jQuery 將this
綁定到接收事件的元素,在回調內部(這不會發生在本機事件處理程序中):
$('#button').click(function() { alert(this); }); // here 'this' == document.getElementById('button');
警告:引用的元素this
是不是“jQuery的增強”。 如果你想用 jQuery 的優點遍歷或修改它,你必須做類似var $this = $(this);
事情var $this = $(this);
您應該知道 jQuery 中trigger
和triggerHandler
之間的區別。
扳機
trigger
盡可能最好地復制自然事件的嘗試。 被觸發的事件的事件處理程序會被執行,但默認的瀏覽器操作不會總是被完全復制。 例如$('a#link).trigger('click');
將執行綁定到鏈接click
事件處理程序的 javascript 函數,但不會像普通單擊那樣將瀏覽器重定向到錨點的href
。 例如: http : //jsfiddle.net/AxFkD/
trigger
調用的所有簡短形式的行為都與trigger
IE 完全相同。 click()
, mouseup()
, keydown()
等
觸發器處理程序
triggerHandler
防止冒泡(EX. http://jsfiddle.net/LmqsS/ ),它避免了默認的瀏覽器行為,只執行事件回調,它返回事件處理程序的返回值而不是用於鏈接的 jQUery 對象。
您還應該知道trigger
會影響選擇器匹配的所有元素,但triggerHandler
只影響第一個 EX: http : //jsfiddle.net/jvnyS/
您可以以編程方式觸發任何事件。 但是大多數事件不能使用程序觸發器模擬為自然事件。
//觸發一個按鈕的點擊事件
$("buttonSelector").trigger("click");
首先,由於顯而易見的原因,您無法觸發就緒事件。
也就是說, trigger() 引發的事件的行為方式與它們由用戶觸發的方式相同。 特別是,事件處理程序以相同的順序調用。
我所知道的唯一區別是,在舊版本的 jQuery 中,觸發事件不會使 DOM 樹冒泡(該行為在 1.3 版中已修復)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.