首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$.focus()不工作

$.focus()不工作
EN

Stack Overflow用户
提问于 2013-04-07 13:12:39
回答 18查看 214K关注 0票数 185

last example of jQuery's focus() documentation状态

代码语言:javascript
复制
$('#id').focus()

应该使输入成为焦点(活动)。我好像不能让它工作。

即使在这个网站的控制台上,我也在搜索框中尝试它

代码语言:javascript
复制
$('input[name="q"]').focus()

我什么也得不到。有什么想法吗?

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2013-04-07 13:20:45

实际上,只要你不专注于控制台,你给出的专注于这个站点的例子就可以很好地工作。这不起作用的原因很简单,因为它没有从开发控制台窃取焦点。如果您在控制台中运行以下代码,然后在浏览器窗口中快速单击,您将看到它聚焦在搜索框中:

代码语言:javascript
复制
setTimeout(function() { $('input[name="q"]').focus() }, 3000);

至于你的另一个问题,过去给我带来麻烦的一件事是事件的顺序。不能对尚未附加到DOM的元素调用focus()。您尝试关注的元素是否已附加到DOM?

票数 451
EN

Stack Overflow用户

发布于 2015-12-22 01:26:41

在网上的其他地方找到了解决方案...

代码语言:javascript
复制
$('#id').focus();

没有起作用。

代码语言:javascript
复制
$('#id').get(0).focus();

起作用了。

票数 67
EN

Stack Overflow用户

发布于 2017-03-23 16:28:06

这里的一些答案建议使用setTimeout来延迟关注目标元素的过程。其中一个提到目标在模式对话框中。如果不知道setTimeout解决方案在哪里使用的具体细节,我不能进一步评论它的正确性。然而,我认为我应该在这里提供一个答案,以帮助像我一样遇到这个主题的人。

问题的简单事实是,你不能专注于一个还不可见的元素。如果遇到此问题,请确保在尝试聚焦目标时,目标实际上是可见的()。在我自己的例子中,我就是这样做的。

代码语言:javascript
复制
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();

这不起作用。当我从工作的控制台执行$('#elementid').focus()`时,我才意识到发生了什么。不同之处在于,在我的目标代码中,由于动画可能不完整,所以不能确定目标是否确实可见。这就是线索

代码语言:javascript
复制
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});

function focusFunction(){$('#elementid').focus();}

就像预期的那样工作。我最初也放入了一个setTimeout解决方案,它也起作用了。然而,任意选择的超时迟早会破坏解决方案,这取决于主机设备在确保目标元素可见的过程中进行得有多慢。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15859113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档