jquery集中关注动态内容?

Ala*_*lan 8 javascript jquery focus

在jquery中,我将一个<li>元素附加到无序列表中.

我如何专注于新创建的<li>

如果我执行以下操作:

$("ul").append('<li><input type="text" value="Hi!"></li>');
$("li:last").focus(); //doesn't work because new <li> isn't in dom yet
Run Code Online (Sandbox Code Playgroud)

如上所述,焦点不起作用.

我知道jquery 1.4.2有一个live()事件处理程序,它允许你加载事件处理程序来动态添加元素,但我不确定我做错了什么:

$(document).ready(function () {

    $('li').live('load', function () {
       alert("hi!");
       $("li:last").focus();
    });
 });
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 7

您只能将焦点设置为可以保持焦点的元素.默认情况下,列表项不能.这就是为什么你的第一个例子失败,不是因为它是不是在DOM(它在DOM,那是什么append呢)

通常,您应该使用设计用于保持焦点的元素(即将焦点设置在输入而不是列表项上).您也可以(但这不是向后兼容且逻辑性较差)使用HTML5的tabindex(可能设置为0).

onload 将无法正常工作,因为列表项不会加载外部内容.