对于这个奇怪的标题感到抱歉,我想不出更好的方法来说出来。
情况是:我有一个由复杂系统生成的链接(无法更改),单击时会触发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 ***
}
});
我可能正在考虑这个错误的方法,如果有更好的方法请告诉我!
答案 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"); })