Относительно быстрый;
Я динамически создаю несколько элементов и добавляю их к другому элементу.
$element = $('<input />', {
// attributes
}).add('<label />', {
// attributes
});
Создает <input /><label></label>
с соответствующими атрибутами и содержимым. Я просто хочу обернуть это в <div>
и подумал, что будет такой же чистый способ сделать это, но я не могу заставить работать следующее:
$element = $('<input />', {
// attributes
}).add('<label />', {
// attributes
}).wrapAll('<div />');
Если я console.log()
мой $element
, то это только <input>
и <label>
. Я также попробовал
$element = $($('<input />', {
// attributes
}).add('<label />', {
// attributes
})).wrapAll('<div />');
Отдельный выбор элементов <input>
и <label>
, подлежащих добавлению, и применение .wrapAll()
, но это тоже не сработает, что приведет к тому же, что и выше.
Я близко? Должен ли я просто пойти другим путем?
Закончилось следующим: @ mu
$element = $('<div />').append($('<input />', {
// attr
}).add('<label />', {
// attr
}));
Oh JQuery; семь миллионов способов сделать то же самое, и иногда вы не можете понять один.
Редактировать
Просто добавление для будущих посетителей; append
метод также может принимать массив:
$('<div />').append([
$('<div />'),
$('<div />'),
$('<div />'),
]);
Что даст:
<div>
<div></div>
<div></div>
<div></div>
</div>
Так что вам не нужно связывать вызовы с append()
.