jQuery 一个事件阻止另一个事件被触发

jQuery one event prevents other event from being fired

我不确定我忽略了什么。如果我的设计不好或者有解决这个问题的聪明方法。

鉴于:
1 个输入字段
1 个隐藏按钮

逻辑:
如果输入字段获得焦点,则会显示隐藏按钮。
如果输入字段未聚焦,按钮将隐藏。
如果单击按钮,将调用某些函数,然后隐藏按钮。

问题是,当单击按钮时,输入字段之前没有聚焦,因此 unfocus 侦听器首先触发,而按钮单击侦听器却永远不会触发。

这是为什么?为什么两个侦听器都没有被触发?

当前代码结构:

$(someinputfield).focus(function(){
    show button
}
$(someinputfield).focusout(function(){
    hide button
}
$(somebutton).click(function(){
    deliver();
    hide button
}

deliver(); 永远不会被执行!

编辑:
真正的代码在这里:

      $("#input1").focus(function(){
          $("#submit1").delay(600).queue(function(next){
              $(this).css('display', 'block');
              next();
          });
      });
      $("#input1").focusout(function(){
          $("#submit1").hide();
      });
      $("#submit1").click(function(){
          deliver();
          setTimeout(function(){
              $(this).hide();
          }, 2000);
      });

按钮使用 input 而不是 button

这样,当您单击按钮时,输入将保持焦点,而不是外部。

Your selector for the .focus() event will have to include both the input and it's button, in my example below I have simply selected ALL inputs. You will need to change this.

$(function(){

    $('input').focus(function(){
        $('.button').show();
    });

    $('input').blur(function(){
        $('.button').hide();
    });

    $('.button').click(function(){
        alert("clicked");
    });

});

JSFiddle here http://jsfiddle.net/Panomosh/2cjmggqe/2/