现在的位置: 首页 > 综合 > 正文

jquery中的trigger和triggerHandler区别

2018年01月28日 ⁄ 综合 ⁄ 共 1045字 ⁄ 字号 评论关闭

我们在jQuery基础教程之如何注册以及触发自定义事件这篇文章中,有用到今天要讲的trigger方法。
今天我们来简单看看jquery中的trigger何triggerHandler方法的区别:
trigger( event, [data] )
在每一个匹配的元素上触发某类事件。
这个函数也会导致浏览器同名的默认行为的执行。比如,如果用trigger()触发一个’submit’,则同样会导致浏览器提交表单。如果要阻止这种默认行为,应返回false。
你也可以触发由bind()注册的自定义事件

1 $("p").click( function (event, a, b) {
2   // 一个普通的点击事件时,a和b是undefined类型
3   // 如果用下面的语句触发,那么a指向"foo",而b指向"bar"
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>
04 <SCRIPT>
05 $(function(){
06     $("#old").click(function(){
07         $("input").trigger("focus");
08     });
09     $("#new").click(function(){
10         $("input").triggerHandler("focus");
11     });
12     $("input").focus(function(){
13         $("<span>Focused!</span>").appendTo("body").fadeOut(1000);
14     });
15 });
16 </SCRIPT>

抱歉!评论已关闭.