2009-11-19 74 views
1

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

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

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

回答

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. 绑定焦点
  2. 焦点事件处理程序,绑定的事件处理程序的模糊+事件处理程序的mouseenter上显示的div
  3. 在显示的div上的mouseenter上,解除输入字段中的模糊事件
  4. 在显示的div上的mouseleave /其他合适的事件上,将blur事件侦听器重新绑定到输入字段。
0

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