我们在jQuery基础教程之如何注册以及触发自定义事件这篇文章中,有用到今天要讲的trigger方法。
今天我们来简单看看jquery中的trigger何triggerHandler方法的区别:
trigger( event, [data] )
在每一个匹配的元素上触发某类事件。
这个函数也会导致浏览器同名的默认行为的执行。比如,如果用trigger()触发一个’submit’,则同样会导致浏览器提交表单。如果要阻止这种默认行为,应返回false。
你也可以触发由bind()注册的自定义事件
1 |
$( "p" ).click( function (event, a, b) { |
4 |
} ).trigger( "click" , [ "foo" , "bar" ]); |
triggerHandler( event, [data] )
这个特别的方法将会触发指定的事件类型上所有绑定的处理函数。但不会执行浏览器默认动作.
如果你对一个focus事件执行了 .triggerHandler() ,浏览器默认动作将不会被触发,只会触发你绑定的动作:
为了让大家更好地理解这两者的区别,我在网上找来一个很棒的例子:
01 |
< BUTTON id = old type = submit >.trigger("focus")</ BUTTON > |
02 |
< BUTTON id = new type = submit >.triggerHandler("focus")</ BUTTON >< BR >< BR > |
03 |
< INPUT value = "To Be Focused" type = text > |
06 |
$("#old").click(function(){ |
07 |
$("input").trigger("focus"); |
09 |
$("#new").click(function(){ |
10 |
$("input").triggerHandler("focus"); |
12 |
$("input").focus(function(){ |
13 |
$("< span >Focused!</ span >").appendTo("body").fadeOut(1000); |