jQuery模糊,但有异常

时间:2009-11-19 08:01:09

标签: jquery css focus blur

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

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

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

3 个答案:

答案 0 :(得分: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);
        }
    })
});

答案 1 :(得分:1)

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

  1. 绑定事件处理程序以进行焦点
  2. 在焦点上,在显示的div
  3. 上为mouseenter的blur +事件处理程序绑定事件处理程序
  4. 在显示的div上的mouseenter上,取消绑定输入字段中的blur事件
  5. 在显示的div上的mouseleave /其他合适事件上,将blur事件侦听器重新绑定到输入字段。

答案 2 :(得分:0)

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