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

Keep specific HTML tags after string is passed into .text() function

本文关键字:保留 标记 HTML 函数 字符串 text      更新时间:2023-09-26

如果我有以下字符串:

hello

goodbye

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

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

Atm,.text()返回这个:

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

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

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

如果不是regex,还有其他选项吗?

您可以使用replace将''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/

只需检查"红色框",即可查看在输入字段中使用换行符时自动插入的

<!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>

在大多数情况下都能工作的脚本。这是我一段时间前写的,因为regex replace(/''n''r?/g,'')并不总是有效,我还需要去掉carage return:)

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;
}

希望有帮助:)

您可以使用CSS:

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