FF / Chrome / Safari中的jQuery .has(“:focus”)

我有一个文本框,当你键入下面的结果时,它有filter。 我有jQuery,可以检测焦点何时离开文本框,以便隐藏结果div。 但是如果点击结果我不想隐藏结果,这样我就可以使用该点击重定向到该项目的不同页面。

我正在使用.has(":focus")检查我的结果div 或其任何一个孩子是否有焦点。 我的问题是,就我所知,这只适用于IE。 谁知道为什么?

 $("#TextBox").blur(function () { if ($("#ResultsDIV").has(":focus").length == 0) { //if you click on anything other than the results $("#ResultsDIV").hide(); //hide the results } }); 

更新:感谢Climbage我有这个工作……

 var resultsSelected = false; $("#ResultsDIV").hover( function () { resultsSelected = true; }, function () { resultsSelected = false; } ); $("#TextBox").blur(function () { if (!resultsSelected) { //if you click on anything other than the results $("#ResultsDIV").hide(); //hide the results } }); 

工作示例: http //jsfiddle.net/cB2CN/

问题是DOM上的所有非元素实际上都接受焦点,并且由浏览器决定哪些元素可以做到。 请参阅哪些HTML元素可以获得焦点?

也许你的#ResultsDIV上有一个hover事件,它设置一个全局变量来确定当你点击它时该元素是否有焦点。