2015-04-02 78 views
2

比如我有類似如何在事件處理程序中的回調中防止默認值?

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

我想阻止放映功能的回調裏面點擊按鈕的默認行爲(以確保節目DIV是飛奔的MYVAR功能之前所示)。 IBut我不能使preventDefault()的作品。我怎樣才能做到這一點?謝謝!

+0

移動'event.preventDefault();''之前線show'。 – dfsq 2015-04-02 06:20:36

+1

我認爲你真的在問及如何回到過去。不可能(還)。你可以做的事情是立即阻止事件**,然後如果你確定你真的想要它,那麼在你的回調中重新發布它。 – 2015-04-02 06:25:20

回答

0

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

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

希望這會對你有用。

0

它不應該在回調中。

如果你把它的回調裏面的默認行爲將被開除已有:

$('div').on('click', '.button', function(event) 
    event.preventDefault();{ 
    $('.showdiv').show('fast', function(){ 
    var myvar = someFunction(); 
    if(myvar == 1){ 
    } 
    }); 
}); 
0
在你不及格事件作爲參數的代碼

。 變化

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