我正在使用 jQuery。有带有 ID 和附加 .blur() 事件的输入字段。当我试图找出焦点所在的新项目时,问题就来了:
$("#"+field).blur(function()
{
console.log ($(this).attr('id')+' -> '+$("*:focus").attr('id'));
}
但是这个$("*:focus").attr('id')是未定义的。如何检测焦点在哪里?
你遇到的问题是你试图得到有焦点的项目,但你做得太早了。所以你要做的是:
blur event gets fired
you try to get the element which has got focus
new element gets focus
当然,最简单的方法是为焦点添加事件侦听器,但如果您不想这样做,这将是诀窍:
$("input").blur(function() {
setTimeout(function() {
console.log($(":focus"));
}, 1);
});
所以实际上最好的解决方案如下,因为如果你设置一个超时它总是取决于性能:
var sTempId;
$("input")
.focus(function() {
if (sTempId)
console.log ( sTempId + " -> " + $(this).attr("id") );
sTempId = $(this).attr("id");
});