javascript - 将实际的 HTML 元素添加到 PRE/CODE 内容

标签 javascript jquery

我正在尝试创建一种快速/肮脏的方式来使用 javascript 在 html 中为 pre/code 标记添加一些语法突出显示。

我遇到的问题是,如果我编辑 text() 或 html(),我会得到转义内容。也就是说,添加的标签呈现为预/代码,或者我得到一堆转义字符。

考虑以下 html:

<pre>
    <code class="target">
    public interface __iIFoo { }
    public class __tBar : __iIFoo { }

    var list = new List__/__iIFoo\__();
    </code>
</pre>

此处的目标是将出现的 __iIFoo 替换为:

<span class="interface">IFoo</span>

这样就可以用css高亮显示了。当然,当它呈现时,我不想看到实际的 SPAN 标记。

这是我尝试过的:

$(function(){
    var iPatt = /__i\w+/g
    $.each($(".target").text().match(iPatt), function(i,match){
        var replace = '<span class="interface">'+match.substring(3)+'</span>';
        $(".target").text(function(){
            return $(this).text().replace(match, replace);
        });
    });
});

这行得通,但是,我添加的 span 标签显示在呈现的内容中,例如它们就像所有其他的预编码一样。我不想看到它!

最佳答案

使用 .html() 而不是 .text()。当您使用 .text() 时,该值是您希望用户看到的文字文本,因此它将特殊的 HTML 字符替换为实体,以便它们按字面显示。

关于javascript - 将实际的 HTML 元素添加到 PRE/CODE 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18009023/

相关文章:

javascript - 当选项和 c :out is used 时,从 JSP/JSTL 中的下拉列表中获取值

javascript - 将点击时的图像替换为图像选择

Javascript addEventListener onStateChange 在 IE 中不起作用

javascript - Paper.js PointText 获取基线坐标而不是左下角

javascript - 如何动态添加国家标记?

javascript - XHR 调用是宏任务还是微任务?

php 正则表达式函数无法转换 JavaScript 参数

javascript - 如何将 fetch 与 REST API 结合使用?

javascript - 用CSS动态覆盖2个div

javascript - 在其他脚本之后执行 jQuery?