将字符串传递到.text()函数后,保留特定的HTML标记

时间:2014-10-20 12:45:21

标签: javascript html regex

如果我有以下字符串:

hello



goodbye

我可以将该字符串设置为div的内容但保留回车符吗?

jQuery('<div class="myTooltip">').text(theString);

Atm,。text()返回:

hello<br> <br> <br> <br> goodbye

由于跨侧脚本问题,我无法使用.html()。

我可以在字符串上使用一些正则表达式来保持carraige返回不被转换为文本吗?

如果不是正则表达式,还有其他选择吗?

3 个答案:

答案 0 :(得分:4)

您可以使用替换将'\n''\n\r'字符转换为'<br />'

这是一个例子:

var myString = 'some text \n';
var parsed= myString.replace(/\n\r?/g, '<br />');
console.log(parsed);

这里有完整的工作示例: http://jsfiddle.net/r6xrf5wh/1/

只需检查&#34;红色框&#34;查看在输入栏中使用换行符时自动插入的内容。

<!DOCTYPE html>
<html>
<head>
<style>
#result {
    width: 200px;
    height: 200px;
    background-color: red;
}
</style>
<script>
window.parse = function() {
    var elm = document.getElementById('test');
    var elmText = elm.value;
    var parsed= elmText.replace(/\n\r?/g, '<br />');
    var elmResult = document.getElementById('result');
    elmResult.innerHTML = parsed;
};

</script>

</head>
<body>
    <textarea id="test" rows="4" cols="50"></textarea>
    <button type="button" onclick="parse()">Click Me!</button>
    <div id="result">x</div>
</body>
</html>

答案 1 :(得分:1)

在大多数情况下都适用的脚本。它是我前一段时间写的,因为正则表达式替换(/ \ n \ r?/ g,&#39;&#39;)并不总是有效,我还需要摆脱carrige返回:)

function (str) {
    var cleanStr = "";
    if(str!=null && str!=""){
        for(var i=0; i< str.length; i++){
            if(!str[i].charCodeAt(0) == 10 && !str[i].charCodeAt(0) == 13){
                cleanStr+=str[i];
            }
        }
    }
    return cleanStr;
}

希望有所帮助:)

答案 2 :(得分:1)

你可以使用CSS:

$('<div class="myTooltip" style="white-space: pre-line;"></div>').text(theString);