jQuery:原始html的元素数组?

时间:2010-07-22 17:44:46

标签: jquery elements documentfragment

假设我有一个这样的数组:

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

我需要获得连接元素的标记。所以我需要将content“转换为原始字符串:”<p>...</p><p>...</p>“。

如何轻松完成?似乎框架中应该有一些东西可以做到这一点。

不知何故可能会将content转换为文档片段并在文档片段上调用.html()来获取标记?

3 个答案:

答案 0 :(得分:14)

没有什么是自动的,但你可以很容易地做你刚刚描述的事情。

试一试: http://jsfiddle.net/Y5x5z/

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

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

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

alert(container.html());

答案 1 :(得分:3)

这比其他答案短,工作正常,并且不使用显式循环:

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

正如Crazy Train在评论中指出的那样,可以如下所示:

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

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

alert(content.join("")); // <p>...</p><p>...</p>

答案 2 :(得分:-1)

这是一篇很老的帖子,有人可能会像我一样偶然发现...正确的方法是.join()(标准的JavaScript不是jQuery)

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

var concatenatedHTML = content.join('');

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