[英]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"); })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.