您需要使用本机 javascriptfocus()
方法。您不能直接在 jQuery 对象上使用它,因为该对象不仅仅引用 DOM 元素。
选择器$('#bubble_logged')
将返回一个 jQuery 对象,其中包含 ID 为“bubble_logged”的所有项目。应该只有一个,但 jQuery 不在乎。所以,我们需要找到这个集合中的第一个(也是唯一一个)项目。您可以使用$('#bubble_logged').get(0)
或来做到这一点$('#bubble_logged')[0]
。一旦你这样做了,你就有了对你正在寻找的 DOM 元素的引用。
因此,我们添加 a.focus()
以将焦点移至该元素。$('#bubble_logged').get(0).focus();
请注意,这将尝试聚焦 #bubble_logged 元素。如果那是一个div,它不会做太多。如果您尝试将某个元素聚焦在该容器内,则需要调用 focus 来代替。
对于.hover()
jQuery 方法,您为其提供了两个匿名函数。第一个是 hoverIn 事件处理程序,第二个是 hoverOut 事件处理程序。我相信您希望弹出窗口淡入,然后设置焦点。为此,请将这两个逻辑部分放在第一个事件处理程序中。
$('.disabled').hover (
function () {
$('#bubble_logged').fadeIn(300, function(){
//this is executed once the fadein is complete
$('#bubble_logged')[0].focus();
});
},
...
);
然后,当调用 hoverOut 方法时,您可能想要淡出弹出窗口。只需添加以下内容。
$('.disabled').hover (
...
function () {
$('#bubble_logged').fadeOut(300);
}
);
最终的脚本看起来像这样。
$('.disabled').hover (
function () {
$('#bubble_logged').fadeIn(300, function(){
//this is executed once the fadein is complete
$('#bubble_logged')[0].focus();
});
},
function () {
$('#bubble_logged').fadeOut(300);
}
);