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
事件,它设置一个全局变量来确定当你点击它时该元素是否有焦点。