[英]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.