簡體   English   中英

如何防止事件處理程序內的回調內的Default?

[英]How can I preventDefault inside a callback inside an event handler?

例如我有類似的東西

$('div').on('click', '.button', function(event){
  $('.showdiv').show('fast', function(){
     var myvar = someFunction();
     if(myvar == 1){
        event.preventDefault();
     }
  });
});

我想防止在show函數的回調內單擊按鈕的Default行為(以確保在運行myvar函數之前顯示show div)。 但是,我無法使preventDefault()起作用。 我該如何實現? 謝謝!

請檢查下面的更新代碼,我認為您還需要在show函數中定義事件。

$('div').on('click', '.button', function(event){
      $('.showdiv').show('fast', function(event){
         var myvar = someFunction();
         if(myvar == 1){
            event.preventDefault();
         }
      });
    });

希望這對您有用。

它不應位於回調內部。

如果將其放在回調中,則默認行為將已經觸發:

$('div').on('click', '.button', function(event)
  event.preventDefault();{
  $('.showdiv').show('fast', function(){
     var myvar = someFunction();
     if(myvar == 1){
     }
  });
});

在代碼中,您沒有將事件作為參數傳遞。 改成

 $('.showdiv').show('fast', function(){
 var myvar = someFunction(event); // pass parameter
 if(myvar == 1){
    event.stopPropagation();
    event.preventDefault();
 }
});

暫無
暫無

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

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