Javascript unfocus上的jsjquery隐藏元素阻止触发其他事件

Javascript unfocus上的jsjquery隐藏元素阻止触发其他事件,javascript,jquery,events,Javascript,Jquery,Events,当搜索文本框失去焦点时,我会隐藏一个搜索建议框。这非常有效,只是当我单击其中一个建议时,该建议的单击事件不会触发 searchText.focusout(function () { $("#search-suggestions").hide(); }); 我还尝试: searchText.focusout(function () { $("#search-suggestions").css("visibility", "hidden"); }); 我试着在unfocus代码上注释隐藏,然

当搜索文本框失去焦点时,我会隐藏一个搜索建议框。这非常有效,只是当我单击其中一个建议时,该建议的单击事件不会触发

 searchText.focusout(function () { $("#search-suggestions").hide(); });
我还尝试:

 searchText.focusout(function () { $("#search-suggestions").css("visibility", "hidden"); });
我试着在unfocus代码上注释隐藏,然后点击事件就可以正常工作了

(基本上,模糊事件发生在可以注册单击建议之前,因此当clicm注册时,我尝试单击的元素不在屏幕上)

以下是单击事件代码:
//在ajax加载之后调用

$("#search-suggestions").find("a").click(function () { alert("hi"); })
我还尝试在服务器上呈现此内容,但也失败了:

<a href="javascript: alert('hi')">Search Suggestion</a>   


如果有人有任何建议,我将不胜感激。谢谢

试着让它隐形

更改
$('#我的搜索框')。隐藏()
$('my#u search_box').css('visibility','hidden')


如果您周围的DOM元素需要像搜索框消失一样工作,您也可以给它指定一个绝对位置。

尝试使用.css('visibility','hidden'),而不是使用display:none的.hide。

您可以尝试定义如下内容:

//this goes where you first binding focusout handler 
searchText.focusout(onFocusOut);

//this is a usual function
function onFocusOut() { 
    $("#search-suggestions").hide(); 
}

//this could be defined after you draw the search-suggestions control
$("#search-suggestions").hover(function() {
    //this is hover in handler; unbind focusout from searchText
    //something like that:
    $("#searchText").unbind('focusout', onFocusOut)
}, function() {
    //this is hover out handler; bind focusout to searchText
    //something like that:
    $("#searchText").bind('focusout', onFocusOut)
});
您还可以使用
live
()定义
搜索建议的悬停处理程序,具体取决于您需要什么


这将使您的搜索建议在单击时保持可见。然后可以在单击处理程序中隐藏它们。

.hide()
不会从DOM中删除元素。将其设置为
display:none。另外,我们也不知道OP是如何“隐藏”元素的。对,JQuery和CSS都将其视为不存在。抱歉让人困惑。哈哈,我并没有从DOM中删除它;我尝试了hide()和.css('visibility','hidden');这两种方法都不适用于以下代码:searchText.focusout(函数(){$(“#搜索建议”).hide()});这不是单击处理程序的问题,而是事件调用顺序的问题;但我会以任何方式发布它。