如何使用jquery将同步的html预标记组合成一个预标记?

如何使用jquery将同步的html预标记组合成一个预标记?,jquery,html,Jquery,Html,我对标记有问题。我的HTML编辑器将每行代码包装到单独的标记中。例如: <pre> var abc = "apple"; </pre> <pre> var def = "ball"; </pre> <pre> var abc = "apple"; var def = "ball"; </pre> $(function () { var removed = [] $("pr

我对
标记有问题。我的HTML编辑器将每行代码包装到单独的
标记中。例如:

<pre>
    var abc = "apple";
</pre>

<pre>
    var def = "ball";
</pre>
<pre>
    var abc = "apple";
    var def = "ball";
</pre>
$(function () {
    var removed = []
    $("pre").each(function () {
        if (removed.indexOf(this) != -1) {
            return;
        }
        var contents = $(this).html();
        var $nextpre;
        while (($nextpre = $(this).next("pre")) && $nextpre.length > 0) {
            contents += $nextpre.html();
            removed.push($nextpre[0]);
            $nextpre.remove();
        }
        $(this).html(contents);
    });
});

var abc=“苹果”;
var def=“ball”;
我想做的是将这两个pre标记包装成一个:


var abc=“苹果”;
var def=“ball”;
包装必须是连续的
标记,因为在这些
标记块之间有其他文本

这很接近。有一个问题是
.next()
跳过文本节点,因此这会合并仅由文本分隔的
块,而不是其他HTML元素。


这种方法怎么样:-

获取相邻的
pre
s对,迭代,使用self获取上一个并获取其内容,打开它们以移除
pre
wrappers(对),并使用新的
pre
标记包装所有(对)

$('pre')。下一个('pre')。每个(函数(){
$(本)
.prev(“pre”)
.andSelf()
.contents()
.unwrap()
.wrapAll(“”);
});

需要更多关于页面上预标记之间可能关系的信息。它们是否嵌套在某个公共元素中?它们可以随机存在于页面的任何位置吗?它们之间可以有多大的空间?pre标记可以随机存在,但它们有一个公共类。这就像编写几个代码块并在它们之间进行解释,这不会拾取文本节点。上面的代码对我来说很有用,但它并没有占用pre中包含的文本之间的新行字符tags@Anudwigna看看这个。第一个和第二个
pre
元素中有新行。这对我来说很有用。实际上,这是一个C程序,我正试图发布到我的网站上。C程序的每一行代码都由pre标记包装。我正在尝试将程序包装成一个预标记。我想问题出在我的编辑身上。是蒂尼姆斯。它将每行代码包装在pre标记中。JSFIDLE不允许在pre标记中编写C代码。您的脚本出现了一些错误,无论是否合并,输出都是相同的。我越来越接近了,但现在它删除了它合并的
,因为下一次迭代仍然在该节点上运行,因为它是原始集合的一部分。需要以某种方式跳过我看到的节点。pre标记中文本之间的新行字符不包括在内。。。合并是perfect@Anudwigna它会处理好的。。你能给我看一个提琴样本吗?事实上,这是一个C程序,我正试图发布到我的网站上。C程序的每一行代码都由pre标记包装。我正在尝试将程序包装成一个预标记。我想问题出在我的编辑身上。是蒂尼姆斯。它将每行代码包装在pre标记中。JSFIDLE不允许在pre标记中编写C代码。有一些错误
$(function () {
    var $pre = $('pre + pre');
    $pre.each(function () {
        var $elem = $(this);
        var $before = $elem.prev('pre');

        $elem.contents().unwrap().appendTo($before);
    });
});
$('pre').next('pre').each(function () {
   $(this)
          .prev('pre')
          .andSelf()
          .contents()
          .unwrap()
          .wrapAll('<pre/>');
});