繁体   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