我們在jQuery基礎教程之如何註冊以及觸發自定義事件這篇文章中,有用到今天要講的trigger方法。
今天我們來簡單看看jquery中的trigger何triggerHandler方法的區別:
trigger( event, [data] )
在每一個匹配的元素上觸發某類事件。
這個函數也會導致瀏覽器同名的默認行爲的執行。比如,如果用trigger()觸發一個’submit’,則同樣會導致瀏覽器提交表單。如果要阻止這種默認行爲,應返回false。
你也可以觸發由bind()註冊的自定義事件
1
2
3
4
|
$( "p" ).click(
function
(event, a, b) { //
一個普通的點擊事件時,a和b是undefined類型 //
如果用下面的語句觸發,那麼a指向"foo",而b指向"bar" }
).trigger( "click" ,
[ "foo" ,
"bar" ]); |
triggerHandler( event, [data] )
這個特別的方法將會觸發指定的事件類型上所有綁定的處理函數。但不會執行瀏覽器默認動作.
如果你對一個focus事件執行了 .triggerHandler() ,瀏覽器默認動作將不會被觸發,只會觸發你綁定的動作:
爲了讓大家更好地理解這兩者的區別,我在網上找來一個很棒的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
< button
id = "old" >.trigger("focus")</ button > < button
id = "new" >.triggerHandler("focus")</ button >< br >< br > < input
type = "text"
value = "To
Be Focused" > < script > $(function(){ $("#old").click(function(){ $("input").trigger("focus"); }); $("#new").click(function(){ $("input").triggerHandler("focus"); }); $("input").focus(function(){ $("< span >Focused!</ span >").appendTo("body").fadeOut(1000); }); }); </ script > |
結合前文所述的jquery中的這兩個方法的定義~大家自己去理解例子吧~
有不明白的,可以留言~