jquery中的trigger和triggerHandler区别

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

 

$("p").click( function (event, a, b) {  // 一个普通的点击事件时,a和b是undefined类型
  // 若是用下面的语句触发,那么a指向"foo",而b指向"bar"} ).trigger("click", ["foo", "bar"]);

 

triggerHandler( event, [data] )
这个特别的方法将会触发指定的事件类型上全部绑定的处理函数。但不会执行浏览器默认动做.
若是你对一个focus事件执行了 .triggerHandler() ,浏览器默认动做将不会被触发,只会触发你绑定的动做:浏览器

为了让你们更好地理解这二者的区别,我在网上找来一个很棒的例子: app

复制代码

<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>

复制代码

相关文章
相关标签/搜索