javascript - 停止元素上的更多事件处理程序

标签 javascript jquery events

我正在编写一个小的 jQuery 扩展,可以防止用户双击链接。

$.fn.preventDoubleClick = function() {
    return this.click(function() {
        var $t = $(this)
            , retVal = $t.data('active')  // check the internal flag
        ;
        if (retVal || retVal === undefined) { // if ON...
            $t.data('active', false);  // set the internal flag to OFF
            setTimeout(function() {
                $t.data('active', true);
            }, 1000);  // after 1 second, set the internal flag to ON
            console.log("allowed");
            return true;
        } else {  // if OFF...
            console.log("blocked");
            return false;
        }
    });
};

问题是,如果元素上有其他点击事件处理程序,它们仍然会触发:

$('#myLink').click(function() {
    console.log("Clicked");
});
$('#myLink').preventDoubleClick();

现在,当您双击该链接时,我会在日志中看到以下内容:

allowed
clicked
blocked
clicked

所以基本上,我需要 preventDoubleClick 中的 click 函数来阻止所有其他事件处理程序触发。我怎样才能做到这一点?

最佳答案

感谢 Adam 的链接,我能够看到我需要的功能:stopImmediatePropagation() .

关于javascript - 停止元素上的更多事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/746506/

相关文章:

javascript - 使用 RxJS 进行批处理?

javascript - While循环: Generated table rows and column inconsistency

javascript - 使用 jQuery 制作自定义范围 slider

jquery - 在较小的设备中更改 DataTables (jQuery+Bootstrap4) 的 'pagingType' 选项

javascript - 永久组合 "click"和 "hover"?

javascript - sequelize 用小时 = 2 解释日期

javascript - 是否可以在 Vimeo Player (Froogaloop) 中打开和关闭视频全屏?

delphi - 如何在处理期间查看查询执行的进度?

javascript - 如何在没有事件的情况下调用js函数

javascript - 单击 <li> 而不是 <option> 元素时如何播放音频 - Javascript