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()方法,所以不会冒泡,就此结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值