набор jQuery фокусируется на динамическом контенте?

В jQuery я добавил a <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

фокус не работает, как отмечено выше.

Я знаю, что jQuery 1.4.2 имеет a live() обработчик событий, который позволяет Вам, загружает обработчики событий в динамично добавленные элементы, но я не уверен, что я делаю неправильно:

$(document).ready(function () {

    $('li').live('load', function () {
       alert("hi!");
       $("li:last").focus();
    });
 });
8
задан Alan 17 May 2010 в 09:35
поделиться

2 ответа

Вы можете установить фокус только на элементы, которые могут удерживать фокус. По умолчанию элемент списка не может. Вот почему ваш первый пример терпит неудачу, а не потому, что его нет в DOM (это это в DOM, это то, что делает append )

В общем, вы должны использовать элементы, предназначенные для удержания фокуса (то есть устанавливают фокус на вводе, а не на элементе списка ). Вы также можете (но это менее обратно совместимо и менее логично) использовать HTML5 tabindex (возможно, установив его на 0 ).

onload не будет работать, потому что элементы списка не загружают внешнее содержимое.

7
ответ дан 5 December 2019 в 18:57
поделиться

Вы можете попробовать это, $ (YourElement) .trigger ("focus") .

2
ответ дан 5 December 2019 в 18:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: