2011-08-01 146 views

回答

2

每個事件都可以以編程方式觸發,只需使用它的無回調版本即可。

例子:

$('#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);

0

您可以以編程方式觸發任何事件。但大多數事件不能被模擬爲使用程序觸發器的自然事件。

//觸發一個按鈕

$("buttonSelector").trigger("click"); 
0

首先單擊事件,出於顯而易見的原因,你不能觸發ready事件。

也就是說,trigger()引發的事件的行爲方式與用戶觸發的行爲相同。特別是,事件處理程序以相同的順序被調用。

我所知道的唯一區別是觸發的事件並沒有在老版本的jQuery中彈出DOM樹(該行爲在1.3版中已得到修復)。

1

你應該知道jQuery中的triggertriggerHandler之間的區別。

觸發

trigger嘗試是最好的,它可以複製的自然事件。被觸發事件的事件處理程序get被執行,但默認瀏覽器操作不會總是被完全複製。例如,$('a#link).trigger('click');將執行綁定到鏈接click事件處理程序的JavaScript函數,但不會將瀏覽器重定向到錨點的href,就像正常點擊一樣。 EX:​​

所有trigger調用的縮寫形式與IE的行爲完全相同。 click()mouseup()keydown()

triggerHandler

triggerHandler防止冒泡(EX。http://jsfiddle.net/LmqsS/),它避免了默認瀏覽器行爲,只是執行事件回調,並且它返回事件處理程序的返回值,而不是用於鏈接的jQUery對象。

你也應該知道,trigger影響由選擇匹配的所有元素,但triggerHandler隻影響第一個EX:http://jsfiddle.net/jvnyS/

相關問題