抱歉,这个标题很奇怪,我想不出更好的措辞方式。
情况是:我有一个由复杂系统生成的链接(无法更改),单击时会触发 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"); })
关于javascript - jQuery:防止绑定(bind)的js在单击时运行,然后在满足条件时运行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28316519/