【问题标题】: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】:
您可以尝试执行以下操作:
- 为焦点绑定事件处理程序
- 在焦点上,将 blur 的事件处理程序 + mouseenter 的事件处理程序绑定到显示的 div 上
- 在显示的 div 上的 mouseenter 上,将模糊事件与输入字段解除绑定
- 在显示的 div 上发生 mouseleave / 其他合适的事件时,将模糊事件侦听器重新绑定到输入字段。
【解决方案3】:
如果没有更多信息,我不能告诉你太多,如果我是你,我会尝试在文本输入元素上使用 change 事件,而不是聚焦和模糊。如果您描述更多您尝试实现的内容,我可能会更具体。