【问题标题】:Remove all HTMLtags in a string (with the jquery text() function)删除字符串中的所有 HTML 标记(使用 jquery text() 函数)
【发布时间】:2011-12-14 22:36:49
【问题描述】:

是否可以使用 jquery text() 函数来删除字符串中的所有 HTML?

带有 HTML 标记的字符串:
myContent = '<div id="test">Hello <span>world!</span></div>';


结果必须是:
Hello world!

【问题讨论】:

标签: jquery string text


【解决方案1】:
var myContent = '<div id="test">Hello <span>world!</span></div>';

alert($(myContent).text());

这会导致你好世界。这能回答你的问题吗?

http://jsfiddle.net/D2tEf/ 为例

【讨论】:

  • 或者换句话说,对于 x 的任何字符串值,$(''+x+'').text() == x 总是计算为真。
  • 其实不是这样,如果字符串中包含html。
  • 这个解决方案只有在 myContent 是一个真正的 HTML 字符串时才有效,为了概括我认为最好使用的解决方案:stringClean=$("
    "+myContent+"
    ").text ();
  • 正如@AlessandroBattistini 指出的那样,如果 myContent 不是真正的 HTML 字符串,$(myContent) 将失败——$("&lt;div&gt;"+myContent+"&lt;/div&gt;") 确保这永远不会成为问题,因此,这里有更好的答案.
【解决方案2】:

我创建了这个测试用例:http://jsfiddle.net/ccQnK/1/,我使用了带有正则表达式的 Javascript 替换函数来得到你想要的结果。

$(document).ready(function() {
    var myContent = '<div id="test">Hello <span>world!</span></div>';
    alert(myContent.replace(/(<([^>]+)>)/ig,""));
});

【讨论】:

  • 您应该始终在此处发布实际的解决方案,而不仅仅是在 jsfiddle 或其他类似站点中。无法保证其他网站将来会存在。
  • 来自 jsfiddle myContent.replace(/(]+)>)/ig,"")
  • 不是正则表达式解决方案的忠实拥护者。它们几乎总是会被破坏。
  • 这将完全删除像&lt;3 love ya &lt;br /&gt;这样的文字
【解决方案3】:

如果你需要删除 HTML 但不知道它是否真的包含任何 HTML 标签,你不能直接使用 jQuery 方法,因为它返回非 HTML 文本的空包装器。

$('<div>Hello world</div>').text(); //returns "Hello world"
$('Hello world').text(); //returns empty string ""

您必须将文本包装在有效的 HTML 中:

$('<div>' + 'Hello world' + '</div>').text();

或者使用可以处理 HTML 和非 HTML 文本的方法 $.parseHTML()(从 jQuery 1.8 开始):

var html = $.parseHTML('Hello world'); //parseHTML return HTMLCollection
var text = $(html).text(); //use $() to get .text() method

加上 parseHTML 完全删除了脚本标签,这对于用户输入的反黑客保护非常有用。

$('<p>Hello world</p><script>console.log(document.cookie)</script>').text();
//returns "Hello worldconsole.log(document.cookie)"

$($.parseHTML('<p>Hello world</p><script>console.log(document.cookie)</script>')).text();
//returns "Hello world"

【讨论】:

    【解决方案4】:

    另一种选择:

     $("<p>").html(myContent).text();
    

    【讨论】:

      【解决方案5】:

      你不能只try it吗?

      myContent = '<div id="test">Hello <span>world!</span></div>';
      console.log($(myContent).text()); //Prints "Hello world!"
      

      注意,你需要将字符串包装在一个jQuery对象中,否则它显然不会有text方法。

      【讨论】:

        【解决方案6】:

        我发现在我的具体情况下,我只需要修剪内容。也许不是问题中提出的答案。但我想我还是应该添加这个答案。

        $(myContent).text().trim()
        

        【讨论】:

          猜你喜欢
          • 2016-12-16
          • 2012-03-14
          • 2010-09-19
          • 2017-09-06
          相关资源
          最近更新 更多