如何替换<和>与<和>用jQuery或JS

时间:2013-07-31 09:06:39

标签: javascript jquery html

我一直在寻找一天左右如何使用JS或jQuery做些什么,并找到了几个解决方案,但还没有什么可靠的。

我想用这个:

<code class="codeIt">

  <h2> This is an H2 </h2>

</code>

我希望输出为:

<h2> This is an H2 </h2>

我知道我可以做到这一点:

<code class="codeIt">

  &lt;h2&gt; This is an H2 &lt;/h2&gt;

</code>

...但我不想手动搜索并替换我在这些块中的代码,而是在浏览器中动态完成。这可能吗?

我很喜欢jQuery,所以我尝试了.replaceWith或JavaScript的.replace,但到目前为止,我还没有得到它需要的地方。我正在替换整个标签或做其他错误。

我的问题是:我如何编写一个简单的jQuery(或常规JS)来帮助我用<和{{1}等HTML实体替换我的>&lt;在我的&gt;标签内。

我感谢任何帮助,谢谢。

更新:

我设法让它工作得很好@Prisoner如何解释,它非常漂亮,但是在我的特殊情况下需要稍微扩展,因为我有<code>类的多个代码块,所以我有使它检查每个元素和输出...否则它将继续产生相同的输出(如第一个块)

Here is the fiddle

感谢大家的回答。

6 个答案:

答案 0 :(得分:5)

单个code元素的简单JS

var myCode = document.getElementById('mycode');
myCode.innerHTML = myCode.innerHTML.replace(/</g,'&lt;').replace(/>/g,'&gt;')

普通JS用于多个code元素

var codeEls = document.getElementsByTagName('code');
for(var i in codeEls)
{
    if(parseInt(i)==i)
    {
        var codeEl = codeEls[i];
        if(codeEl.className.match(/\bcodeIt\b/)!==null) codeEl.innerHTML = codeEl.innerHTML.replace(/</g,'&lt;').replace(/>/g,'&gt;')
    }
}

或jQuery

$(".codeIt").each(function() {
    $(this).html(
        $(this).html().replace(/</g,'&lt;').replace(/>/g,'&gt;')
    );
});

答案 1 :(得分:5)

假设您只想转义所有HTML:

$(".codeIt").text($(".codeIt").html());

答案 2 :(得分:1)

您可以使用jquery的文本功能:

var myText = $('.codeIt').html();

var escapedText = $('.codeIt').text(myText).html();

答案 3 :(得分:1)

var t = $('.codeIt').html();

$('.codeIt').text(t).html();

看看这个小提琴http://jsfiddle.net/kU8bV/1/

答案 4 :(得分:0)

$('code').html($('code').html().replace(/</g, '&lt;').replace(/>/g, '&gt;'));

答案 5 :(得分:0)

假设您要编码codeIt类中的所有html:

<script type="text/javascript">
        function htmlEncode(value){
            if (value) {
                return jQuery('<div />').text(value).html();
            } else {
                return '';
            }
        }

        function htmlDecode(value) {
            if (value) {
                return $('<div />').html(value).text();
            } else {
                return '';
            }
        }       
        $('.codeIt').each(function() {
            myEncodedString = htmlEncode($(this).html());
            $(this).html(myEncodedString);
        });
</script>