簡體   English   中英

jQuery:防止綁定的js單擊運行,如果滿足條件,則運行它

[英]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"); })

的jsfiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM