我想做的是测试如果焦点已转移到另一个特定元素(另一个 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/