我是靠谱客的博主 帅气眼神,最近开发中收集的这篇文章主要介绍JQuery中tirgger()方法和tirgegrHandler()方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

有时候我们需要模仿用户的操作,来达到比如说单击的效果,在JQuery中提供了tirgger()方法和tirggerHandler方法来完成模拟操作

比如使用以下的代码来触发id为btn的button的click事件:

	$('#btn').trigger("click");

这样,当页面载入完成后。就会立马输出想要的效果。也能够直接简写click()。来达到相同的效果

但是如果对象变为其他没有绑定click事件的元素,则此操作无效,例如:

$('#text').trigger("click");

使用了trigger和triggerHandler方法,我们相当于自己手动帮用户执行了点击等操作


那么trigger方法和triggerHandler方法究竟有什么区别呢?

二者的区别在于trigger()会触发事件的冒泡,而tirggerHandler()不会触发事件冒泡 并且 trigger() 会影响所有与 jQuery 对象相匹配的元素,而 triggerHandler() 仅影响第一个匹配到的元素

我们这里探究事件冒泡问题
观察以下代码

<body>
<h2>自定义事件triggerHandler</h2>
<div class="left">
    <div id="accident">
        <a>triggerHandler事件</a>
        <input type="text">
    </div>
    <button>事件冒泡,触发浏览器默认聚焦行为</button><br><br>
    <button>不会冒泡,不触发浏览器默认聚焦行为</button>
</div>
<script type="text/javascript">

    //给input绑定一个聚焦事件
    $("input").on("focus",function(event,title) {                //focus
        $(this).val(title)
    });

    $("#accident").on("click",function() {                      //click
        alert("trigger触发的事件会在 DOM 树中向上冒泡");
    });
    
    //trigger触发focus
    $("button:first").click(function() {
        $("a").trigger("click");
        $("input").trigger("focus","2222");
    });

    //triggerHandler触发focus
    $("button:last").click(function() {
        $("a").triggerHandler("click");
        $("input").triggerHandler("focus","没有触发默认聚焦事件");
    });



</script>
</body>

  当点击第一个按钮时,因为$(“a”)没有绑定click事件,所以执行完此语句后没有反应,但是由于使用的是trigger()方法,会向上冒泡,所以id为accident的div块会执行他的绑定事件。于是alert("trigger触发的事件会在 DOM 树中向上冒泡");语句会被执行。

  当点击第二个按钮时,$(“a”)没有绑定click事件,所以执行完此语句后也没有反应,但是由于使用的是triggerHandler()方法,所以不会冒泡,就此结束。

最后

以上就是帅气眼神为你收集整理的JQuery中tirgger()方法和tirgegrHandler()方法的全部内容,希望文章能够帮你解决JQuery中tirgger()方法和tirgegrHandler()方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部