我有一个文本框,当您在其下方输入结果时会有过滤器。我有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
}
});
答案 0 :(得分:3)
问题在于DOM上的所有非元素实际上都接受焦点,并且由浏览器决定哪些元素可以。见Which HTML elements can receive focus?
可能在hover
上有一个#ResultsDIV
事件设置一个全局变量,以确定该元素在点击时是否具有焦点。