jQuery:防止绑定的js在点击时运行,然后在满足条件时运行它

时间:2015-02-04 08:13:05

标签: javascript jquery

对于这个奇怪的标题感到抱歉,我想不出更好的方法来说出来。

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

相反,当点击链接时,我想要一个模态框,询问用户是否确定。如果他们选择yes,则原始JS函数将运行。如果没有,则模态关闭,没有任何反应。

是否可以取消绑定,捕获和重新绑定原始函数?

伪代码如下,希望有可能:

$('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 *** 

    }
});

我可能正在考虑这个错误的方法,如果有更好的方法请告诉我!

1 个答案:

答案 0 :(得分:1)

您的事件处理程序将按其附加顺序触发。如果您可以将自己插入first position of the queue,则可以在callback参数上调用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