如何使用jQuery获取标签内所有HTML而不更改其格式?

3

例如,考虑以下情况:

<div>
  A&
  <br>
  B
</div>

如果使用$('div').html(),它将返回A&amp;<br>B。它会将A&转换为A&amp;,而我不想要这样的结果。
如果使用$('div').text(),它将返回A&B。它会忽略<br>,这也不是我想要的。
我正在寻找一种方法来获取div中的所有html,但不解析它,也不忽略像<br>这样的标签。
这是我想要的结果:A&<br>B。我该如何实现?

3
“&”有什么问题吗?这将是获取HTML的正确响应。 - adeneo
1
这可以用一点点原生JS完成。请查看此答案。https://dev59.com/o2s05IYBdhLWcg3wLe8j#7394787 - amflare
@Legends 如果答案在另一个问题中,那么这个问题很可能是重复的。请不要建议人们复制答案。 - Heretic Monkey
如果这是同样的问题,请将其标记为重复,@MikeMcCaughan!您有足够的声望来执行此操作。 - Legends
你也可以这样做。你可以点击旗帜链接并将其标记为重复。 - Heretic Monkey
显示剩余7条评论
2个回答

4

function decodeEntities(encodedString) {
    var textArea = document.createElement('textarea');
    textArea.innerHTML = encodedString;
    return textArea.value;
}
console.log(decodeEntities($('div').first().html()))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  A&
  <br>
  B
</div>

编辑

另请参阅node.innerText https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText


谢谢。像你之前建议的那样,使用纯javascript中的innerText也可以。我会使用它。 - Harsha Reaper
谢谢,我会将其添加回来以供参考。 - tommybananas

2
这确实是一种“hack”的方法,但它确实有效。
$("<textarea>").html($("div").html()).val()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接