javascript - 测试当某个元素失去焦点时哪个元素具有焦点

标签 javascript jquery html

我想做的是测试如果焦点已转移到另一个特定元素(另一个 SELECT),元素(一个 SELECT)何时失去焦点。我想在焦点丢失并且不在两者之一上时触发某些内容。

问题是我在第一个选择失去焦点时(使用模糊事件)进行测试,如果另一个选择拥有焦点,但 DOM 尚未更新。

这是我所做的一个示例:

$select1.on("blur", function() {
    if($select2.is(":focus"))
    {
         // do something
    }
    else
    {
        // do something else
    }
});

$select1 和 $select2 只是包含该元素的两个变量。我读到,当元素获得焦点时,JQuery 会添加一个标识符“:focus”,但按照我的方式,它不起作用。

在所有情况下,它都会进入 else“做其他事情”。

最佳答案

马特关于事件顺序的说法是正确的,但你可以更有创意一点。

例如,使用 setTimeout 来延迟模糊检查,以便您知道您已经启动了焦点。简单。

$select1.on("blur", function() {
  window.setTimeout(function() {
    if($select2.is(":focus"))
    {
       // do something
    }
    else
    {
      // do something else
    }
  },100);
});

试试那个。

关于javascript - 测试当某个元素失去焦点时哪个元素具有焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10015331/

相关文章:

javascript - 为什么将 Javascript 函数构建为 jQuery 插件?

javascript - 防止 mousedown 窃取当前输入的焦点,但允许选择文本

php - 更改 iFrame SRC 并在数据库内容更改时重新加载 iFrame

javascript - Ajax 调用 HTML 表

javascript - 如果我忽略 "coding nicely"并将 css(使用样式标签)和 js(使用脚本标签)代码放在一个 html 文件中会发生什么

javascript - 如何偏移 Mongoose 排序查询以在特定文档之后开始

javascript - 如何从 Windows Azure 服务器脚本中插入的项目中获取自动生成的 ID?

javascript - 向 Date() 添加 50 分钟

javascript - jQuery 鼠标悬停,当 true 时向左或向右动画

javascript - 为什么即使在alert()之前调用preventDefault(),alert()也会执行?