如何在事件处理程序内的回调中阻止默认?

时间:2015-04-02 06:16:42

标签: javascript jquery callback preventdefault

例如我有类似

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

我想在show函数的回调中阻止click按钮的Default行为(以确保在myvar函数runn之前显示show div)。我不能使preventDefault()工作。我怎样才能实现呢?谢谢!

3 个答案:

答案 0 :(得分:0)

请检查以下更新代码,我认为您还需要在show function中定义事件。

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

希望这对你有用。

答案 1 :(得分:0)

它不应该在回调中。

如果你把它放在回调中,那么默认行为就已经被触发了:

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

答案 2 :(得分:0)

在代码中,您没有将事件作为参数传递。 改为

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