簡體   English   中英

jQuery 以編程方式觸發事件

[英]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 中triggertriggerHandler之間的區別。

扳機

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM