1

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

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

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

3 回答 3

2
$("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);
        }
    })
});
于 2009-11-19T08:52:52.377 回答
1

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

  1. 绑定事件处理程序以获得焦点
  2. 在焦点上,在显示的 div 上绑定 blur 的事件处理程序 + mouseenter 的事件处理程序
  3. 在显示的 div 上的 mouseenter 上,将模糊事件与输入字段解除绑定
  4. 在显示的 div 上的 mouseleave / 其他合适的事件上,将模糊事件侦听器重新绑定到输入字段。
于 2009-11-19T08:11:32.377 回答
0

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

于 2009-11-19T08:26:51.963 回答