【问题标题】:How can I preventDefault inside a callback inside an event handler?如何在事件处理程序内的回调中防止默认值?
【发布时间】:2015-04-02 06:16:42
【问题描述】:

例如我有类似的东西

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

我想阻止显示函数回调中单击按钮的默认行为(以确保在 myvar 函数运行之前显示显示 div)。我但我不能让 preventDefault() 工作。我怎样才能让它发生?谢谢!

【问题讨论】:

  • event.preventDefault();移到show行之前。
  • 我认为您实际上是在问如何回到过去。 (还)不可能。不过,您可以做的是立即阻止该事件,然后如果您确定确实需要它,则稍后在您的回调中重新发出它。

标签: javascript jquery callback preventdefault


【解决方案1】:

请检查下面的更新代码,我认为您还需要在显示函数中定义事件。

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

希望这对你有用。

【讨论】:

    【解决方案2】:

    它不应该在回调中。

    如果你把它放在回调中,默认行为就会被触发:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多