繁体   English   中英

jQuery:防止绑定的js单击运行,如果满足条件,则运行它

[英]jQuery: Prevent bound js from running on click, then running it if condition is met

对不起,标题怪异,我想不出更好的写法。

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

相反,当单击链接时,我希望出现一个模式框,询问用户是否确定。 如果他们选择是,则原始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 *** 

    }
});

我可能在想这是错误的方法,如果有更好的方法,请告诉我!

您的事件处理程序将按照其附加顺序触发。 如果您可以将自己插入队列第一个位置 ,则可以在回调参数上调用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM