JQuery: массив элементов в сырой HTML? - PullRequest
8 голосов
/ 22 июля 2010

Допустим, у меня есть такой массив:

var content = [ $('<p>...</p>'), $('<p>...</p>') ];

Мне нужно получить разметку объединенных элементов.Поэтому мне нужно преобразовать content "в необработанную строку:" <p>...</p><p>...</p> ".

Как это легко сделать? Похоже, что в рамках уже должно быть что-то для этого.

Каким-то образом, возможно, преобразовать content во фрагмент документа и вызвать .html() во фрагменте документа, чтобы получить разметку?

Ответы [ 3 ]

14 голосов
/ 22 июля 2010

Ничего автоматического, но вы можете легко сделать то, что вы только что описали.

Попробуйте: http://jsfiddle.net/Y5x5z/

var content = [ $('<p>...</p>'), $('<p>...</p>') ];

var container = $('<div/>');

$.each(content, function(i,val) {
    container.append(val);
});

alert(container.html());
3 голосов
/ 11 июня 2013

Это короче, чем другие ответы, работает правильно и не использует явный цикл:

[$("<p>"), $("<p>")].map(function(el){return el.get()[0].outerHTML;})

Как отмечает Crazy Train в комментариях, это может быть подсчитано следующим образом:1004 *

var content = [ $('<p>...</p>'), $('<p>...</p>') ];

$.fn.toString = function() {
    return this[0].outerHTML
};

alert(content.join("")); // <p>...</p><p>...</p>
0 голосов
/ 24 августа 2011

Это старая запись, на которую кто-то может наткнуться, как и я ... правильный способ сделать это будет .join () (стандартный JavaScript, а не jQuery)

var content = [ $('<p>...</p>').html(), $('<p>...</p>').html() ];

var concatenatedHTML = content.join('');

//concatenatedHTML would then be '<p>...</p><p>...</p>'
...