jQuery Как мне получить div в этом коде?
-
21-08-2019 - |
Вопрос
Как мне получить div из этого (последнего) элемента списка?
В настоящее время у меня есть это, что просто ужасно... есть какие-нибудь предложения по более чистому селектору/решению?
var div = ul.append("<li><div></div></li>").contents("li:last-child")[0].children[0];
Спасибо!
Решение
Использование индекса массива возвращает только объект HTMLElement и, таким образом, удаляет множество полезных функций jQuery, поэтому будьте с этим осторожны.Я бы подошел к этому так:
var div = $("<div/>").appendTo($("<li/>").appendTo(ul));
От самого внутреннего до самого внешнего, это создает элемент списка, добавляет его в ваш список, создает div, добавляет его к вашему новому элементу списка и возвращает div, все еще завернутый в jQuery.Если хотите, вы можете добавить индекс массива, чтобы получить только HTMLElement:
var div = $("<div/>").appendTo($("<li/>").appendTo(ul))[0];
Другие советы
Вы также можете добавить немного по-другому:
var div = $('<div/>');
// do whatever you need to do with the div
$('<li/>').appendTo(ul).append(div);
Так?
var div = ul.append("<li><div></div></li>").contents("li:last-child > div")[0];
Как насчет этого:
ul.append("<li><div></div></li>").contents("li:last-child > div").get(0);
Это, я думаю:
var div = ul.append('<li><div></div></li>').find("li:last div");
Как насчет этого:
var div = $('<li><div/></li>').appendTo(ul).find('div');
просто для полноты:
var div = $('<div></div>').appendTo($("<li></li>").appendTo(ul));
var div = ul.append("<li><div></div></li>").find('div').get(0);
Я думаю, это то, что вы ищете.
Мое решение:
var div = ul.append("<li><div></div></li>").find("div:last");