Создание элементов в jQuery; создать, обернуть, добавить - PullRequest
0 голосов
/ 11 августа 2011

Относительно быстрый;

Я динамически создаю несколько элементов и добавляю их к другому элементу.

$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().

Ответы [ 3 ]

5 голосов
/ 11 августа 2011

Почему бы просто не сделать это?

var $div = $('<div>').append($element);

Например: http://jsfiddle.net/ambiguous/CQDe8/1/

2 голосов
/ 11 августа 2011
element = $('<div></div').html($('<input />', {
    // attributes
}).add('<label />', {
    // attributes
}));
1 голос
/ 11 августа 2011

Если я вас правильно понимаю, я думаю, вы можете использовать .appendTo() вместо .wrapAll()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...