首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jQuery将一个标记替换为另一个标记

使用jQuery将一个标记替换为另一个标记
EN

Stack Overflow用户
提问于 2011-08-17 21:10:17
回答 12查看 76.4K关注 0票数 111

目标:

使用jQuery,我尝试替换所有出现的:

代码语言:javascript
运行
复制
<code> ... </code>

通过以下方式:

代码语言:javascript
运行
复制
<pre> ... </pre>

我的解决方案是:

我得到了如下结论:

代码语言:javascript
运行
复制
$('code').replaceWith( "<pre>" + $('code').html() + "</pre>" );

我的解决方案的问题是:

但问题是,它用first“代码”标记之间的内容替换了(第二、第三、第四等)“代码”标记之间的所有内容。

例如:

代码语言:javascript
运行
复制
<code> A </code>
<code> B </code>
<code> C </code>

变成了

代码语言:javascript
运行
复制
<pre> A </pre>
<pre> A </pre>
<pre> A </pre>

我想我需要使用"this“和一些函数,但我担心我还在学习,并不真正理解如何拼凑出一个解决方案。

EN

回答 12

Stack Overflow用户

发布于 2011-08-17 21:19:36

这要好得多:

代码语言:javascript
运行
复制
$('code').contents().unwrap().wrap('<pre/>');

尽管无可否认,Felix Kling's solution近似于twice as fast

票数 84
EN

Stack Overflow用户

发布于 2011-08-17 21:14:05

您将始终获得第一个code的内容,这是正确的,因为$('code').html()将始终引用第一个元素,无论您在哪里使用它。

相反,您可以使用.each遍历所有元素并分别更改每个元素:

代码语言:javascript
运行
复制
$('code').each(function() {
    $(this).replaceWith( "<pre>" + $(this).html() + "</pre>" );
    // this function is executed for all 'code' elements, and
    // 'this' refers to one element from the set of all 'code'
    // elements each time it is called.
});
票数 27
EN

Stack Overflow用户

发布于 2011-08-17 21:14:56

试试这个:

代码语言:javascript
运行
复制
$('code').each(function(){

    $(this).replaceWith( "<pre>" + $(this).html() + "</pre>" );

});

http://jsfiddle.net/mTGhV/

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7093417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档