jquery - 将焦点设置到动态加载的 DIV 中的字段

标签 jquery html focus setfocus

将焦点设置到动态加载的 DIV 中的特定字段的正确方法是什么?

$("#display").load("?control=msgs"); // loads the HTML into the DIV
$('#display').fadeIn("fast"); // display it
$("tex#header").focus();          // ?? neither that
$("input#header").focus();        // ?? nor that
$('#display', '#header').focus()  // ?? nor that
$("#header").focus();             // ?? nor that works

以下 HTML 被提取到 display DIV 中:

<div id="display">
<form id="newHeaderForm" class="dataform" action="/" method="post">
    <input id="to" type="hidden" value="22" name="to"/>
    <dl>
        <dt>Header</dt>
        <dd>
            <input id="header" class="large" type="text" name="header" value="" maxlength="128"/>
        </dd>
 </form>
 </div>

非常非常感谢!

最佳答案

load() 函数是一个异步函数。您应该在 load() 调用完成后设置焦点,即在 load() 的回调函数中,否则您通过 #header 引用的元素尚不存在。例如:

$("#display").load("?control=msgs", {}, function() { 
  $('#header').focus();
}); 

即使使用这个解决方案我自己也有问题,所以我在回调中执行了 setTimeout 并将焦点设置在超时中以确保/真正/确定元素存在。

关于jquery - 将焦点设置到动态加载的 DIV 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1433742/

相关文章:

c# - 从括号表示法中的查询字符串绑定(bind)模型

jQuery - 当屏幕小于1350px时按类删除div

html - 使用垂直对齐将文本对齐到 div 的顶部

php - 来自 Foreach 循环的堆叠/重叠图像

wpf - 如果 ListBox 使用数据绑定(bind),如何在加载时正确设置焦点?

c# - 按下左/右键时防止焦点改变

PHP获取用户ip,真的靠谱吗?

javascript - 如何确保我的 div 中的最后一个标记始终是 <br/>? IE11 中的插入符号问题(错误?)

javascript - 拉斐尔 Canvas (背景)onclick事件

visual-studio-code - 在 VSCode 中的编辑器和集成终端之间启用焦点跟随鼠标