В 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();
});
});
Вы можете установить фокус только на элементы, которые могут удерживать фокус. По умолчанию элемент списка не может. Вот почему ваш первый пример терпит неудачу, а не потому, что его нет в DOM (это это в DOM, это то, что делает append
)
В общем, вы должны использовать элементы, предназначенные для удержания фокуса (то есть устанавливают фокус на вводе, а не на элементе списка ). Вы также можете (но это менее обратно совместимо и менее логично) использовать HTML5 tabindex (возможно, установив его на 0
).
onload
не будет работать, потому что элементы списка не загружают внешнее содержимое.
Вы можете попробовать это, $ (YourElement) .trigger ("focus")
.