jquery - 使用 JQuery 检测容器和子元素何时失去焦点

标签 jquery html focus blur

我想确定当用户点击离开元素时 HTML 元素及其子元素何时失去焦点。例如:

<div id="boxA">
  <ul>
    <li>x</li>
    <li>y</li>
    <li>z</li>
  </ul>
</div>
<div id="boxB">
...
</div>

目前我有:

$("#boxA").live('blur', function() { hideFunction();  });

但是,这不起作用。如果我单击框 A 中的任何元素,它将失去焦点,但我只希望它在单击框 B 或页面上的其他任何位置时发生。

编辑&解决方案

我在 Stack Overflow 上找到了这个解决方案。它对我有用:

Use jQuery to hide a DIV when the user clicks outside of it

最佳答案

您可以尝试监听 focusout 事件,然后检查当前具有焦点的元素是否是您容器的子元素,如下所示:

$('#boxA').on('focusout', function (e) {
    setTimeout(function () { // needed because nothing has focus during 'focusout'
        if ($(':focus').closest('#boxA').length <= 0) {
            hideFunction();
        }
    }, 0);
});

关于jquery - 使用 JQuery 检测容器和子元素何时失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13456530/

相关文章:

javascript - 如何在没有 Flash 的情况下制作交互式城市 map

javascript - 向 javascript 插件添加设置

滚动位置上的 Javascript 动画

javascript - Div 位置不适用于任何值设置

wpf - DataGrid 选项卡导航跳过列

testing - Selenium 打开浏览器并设置焦点

javascript - 添加 jQuery UI 中断 jQuery show()

HTML/CSS - 使用自定义字体/FontSquirrel

jquery - 如何在用户界面的某些页面上禁用复制文本

javascript - 有没有 jQuery "blur"和 "focus"函数的替代方案?