如何防止其他事件处理程序,从第一个处理程序,在jQuery

前端之家收集整理的这篇文章主要介绍了如何防止其他事件处理程序,从第一个处理程序,在jQuery前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果将两个或多个事件处理程序附加到HTML元素,它们将会一个接一个执行。但是,如果要根据第一个处理程序中检查的条件停止后续事件处理程序,那么应该怎么办?

例如:

<div id='target'>
</div>

<p id='result'>
</p>

如果第一个处理程序被取消,我想取消第二个处理程序。

$(function() {
    var target = $('#target'),result = $('#result');
    target.click(function(e) {
        result.append('first handler<br />');
        // Here I want to cancel all subsequent event handlers
    });
    target.click(function(e) {
        result.append('second handler<br />');
    });
});

你可以看到小提琴here

PS:我知道e.preventDefault()阻止HTML元素的默认动作(例如,阻止由于点击链接而发送HTTP GET请求),e.preventPropagation()导致事件被传播到DOM树中的父元素。我也知道,可以使用一个中间变量,在第一个处理程序中将其设置为true,并在后续处理程序中检查它。但我想看看是否有一个更整洁,先进的解决方案这个问题或不。

解决方法

请参见event.stopImmediatePropagation() – http://api.jquery.com/event.stopImmediatePropagation/

根据jQuery API文档,这个方法

Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree.

原文链接:https://www.f2er.com/jquery/184252.html

猜你在找的jQuery相关文章