last example of jQuery's focus() documentation状态
$('#id').focus()应该使输入成为焦点(活动)。我好像不能让它工作。
即使在这个网站的控制台上,我也在搜索框中尝试它
$('input[name="q"]').focus()我什么也得不到。有什么想法吗?
发布于 2013-04-07 13:20:45
实际上,只要你不专注于控制台,你给出的专注于这个站点的例子就可以很好地工作。这不起作用的原因很简单,因为它没有从开发控制台窃取焦点。如果您在控制台中运行以下代码,然后在浏览器窗口中快速单击,您将看到它聚焦在搜索框中:
setTimeout(function() { $('input[name="q"]').focus() }, 3000);至于你的另一个问题,过去给我带来麻烦的一件事是事件的顺序。不能对尚未附加到DOM的元素调用focus()。您尝试关注的元素是否已附加到DOM?
发布于 2015-12-22 01:26:41
在网上的其他地方找到了解决方案...
$('#id').focus();没有起作用。
$('#id').get(0).focus();起作用了。
发布于 2017-03-23 16:28:06
这里的一些答案建议使用setTimeout来延迟关注目标元素的过程。其中一个提到目标在模式对话框中。如果不知道setTimeout解决方案在哪里使用的具体细节,我不能进一步评论它的正确性。然而,我认为我应该在这里提供一个答案,以帮助像我一样遇到这个主题的人。
问题的简单事实是,你不能专注于一个还不可见的元素。如果遇到此问题,请确保在尝试聚焦目标时,目标实际上是可见的()。在我自己的例子中,我就是这样做的。
$('#elementid').animate({left:0,duration:'slow'});
$('#elementid').focus();这不起作用。当我从做工作的控制台执行$('#elementid').focus()`时,我才意识到发生了什么。不同之处在于,在我的目标代码中,由于动画可能不完整,所以不能确定目标是否确实可见。这就是线索
$('#elementid').animate({left:0,duration:'slow',complete:focusFunction});
function focusFunction(){$('#elementid').focus();}就像预期的那样工作。我最初也放入了一个setTimeout解决方案,它也起作用了。然而,任意选择的超时迟早会破坏解决方案,这取决于主机设备在确保目标元素可见的过程中进行得有多慢。
https://stackoverflow.com/questions/15859113
复制相似问题