jquery – 将焦点设置为动态加载的DIV中的字段

前端之家收集整理的这篇文章主要介绍了jquery – 将焦点设置为动态加载的DIV中的字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
将焦点设置为动态加载的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被提取显示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相关文章