2009-11-19 75 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

沒有更多的信息,我不能告訴你太多,只是如果我是你,我會嘗試在文本輸入元素,而不是聚焦和模糊上使用的變化事件。如果你更多地描述你想要實現的內容,我可能會更具體。