【问题标题】:jQuery blur with an exceptionjQuery模糊异常
【发布时间】:2009-11-19 08:01:09
【问题描述】:

我在输入元素上设置了焦点事件。当有焦点时,jQuery 会搜索一个 div 并显示它。这样可行。在相同的输入元素上使用模糊事件,我使 div 隐藏,这也有效。但是当我点击一个链接或者想要在显示的 div 中选择文本时,它会因为 blur 事件而立即消失。如何为显示的 div 设置例外?

$("input.search-main-text").focus(function() {
    $("div.quickResults").show();
});

$("input.search-main-text").blur(function() {
    $("div.quickResults").hide();
});

【问题讨论】:

    标签: jquery css focus blur


    【解决方案1】:
    $("input.search-main-text").bind('focus', function() {
        $("div.quickResults").show();
        $(document).bind('mousedown', function(e) {
            if (! $(e.target).closest('div.quickResults').length) {
                $("div.quickResults").hide();
                $(document).unbind('mousedown', arguments.callee);
            }
        })
    });
    

    【讨论】:

      【解决方案2】:

      您可以尝试执行以下操作:

      1. 为焦点绑定事件处理程序
      2. 在焦点上,将 blur 的事件处理程序 + mouseenter 的事件处理程序绑定到显示的 div 上
      3. 在显示的 div 上的 mouseenter 上,将模糊事件与输入字段解除绑定
      4. 在显示的 div 上发生 mouseleave / 其他合适的事件时,将模糊事件侦听器重新绑定到输入字段。

      【讨论】:

        【解决方案3】:

        如果没有更多信息,我不能告诉你太多,如果我是你,我会尝试在文本输入元素上使用 change 事件,而不是聚焦和模糊。如果您描述更多您尝试实现的内容,我可能会更具体。

        【讨论】:

          猜你喜欢
          • 2015-05-26
          • 2014-04-23
          • 1970-01-01
          • 1970-01-01
          • 2014-06-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-08
          相关资源
          最近更新 更多