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

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

本文关键字:运行 然后 满足 条件 绑定 js jQuery 单击      更新时间:2023-09-26

对不起,这个奇怪的标题,我想不出更好的措辞方式。

情况是:我有一个由复杂系统生成的链接(无法更改),单击时会触发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"); })

斯菲德尔