javascript - jQuery:防止绑定(bind)的js在单击时运行,然后在满足条件时运行它

标签 javascript jquery

抱歉,这个标题很奇怪,我想不出更好的措辞方式。

情况是:我有一个由复杂系统生成的链接(无法更改),单击时会触发 JS 函数。

相反,当单击链接时,我希望出现一个模式框,询问用户是否确定。如果他们选择 yes,那么原始的 JS 函数将运行。如果没有,则模式关闭并且什么也不会发生。

是否可以像这样解除绑定(bind)、捕获并重新绑定(bind)原始函数?

伪代码如下,希望是可能的:

$('a.link').click(function(){

    // *** Capture original JS function bound to link ***

    // *** var agree = Run new function (open modal box) ***

    if(agree === true){

       // *** Run original function ***

    }else{

       // *** Close modal box *** 

    }
});

我可能以错误的方式思考这个问题,如果有更好的方式请告诉我!

最佳答案

您的事件处理程序将按照它们附加的顺序触发。如果您可以将自己插入first position of the queue ,然后在回调参数上您可以调用 e.stopImmediatePropagation()。它将阻止其他事件的触发。设置一个变量记录响应,并再次触发链接点击。

var check = null; //store user's response

$(".preventable").on("click", function(e) {
  if(check == null) {
    e.stopImmediatePropagation();
    alert("hijacked")

    check = true; //confirm here

    if(check)
        $('.preventable').click();
  }
}

$(".preventable").on("click", function(e) { alert("clicked2"); })

jsfiddle

关于javascript - jQuery:防止绑定(bind)的js在单击时运行,然后在满足条件时运行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28316519/

相关文章:

jquery - resize() 时边框大小变化缓慢

javascript - SVG 外来对象文本未显示

Javascript addEventListener - 用于创建鼠标悬停效果?

javascript - 使用 jQuery 切换基于两组复选框的各种 div 的可见性?

jquery - 如何在不使用 overflow hidden 的情况下限制响应式设计中模态的高度?

javascript - 从 bootstrap datetimepicker 获取日期和时间

jQuery 响应式数据表自定义 CSS 和分页

javascript - 如何组织复杂的 jquery 应用程序?

javascript - 获取 VueX 中最后发生的突变的名称

javascript - 检查数组是否包含一些特殊字符