我有以下HTML:
var html = jQuery('#parent').html();
console.log(html)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="parent">
<div id="child"></div>
5 > 3
</div>
我做jQuery('#parent').html();
我得到以下字符串:
'<div id="child"></div>
5 > 3'
我希望得到以下字符串:
'<div id="child"></div>
5 > 3'
我如何实现这一目标?
请注意,我不会提前知道文本节点的值。我只是不希望文本节点的值(如果存在)被编码成某个html实体名称。
此问题不是How to decode HTML entities using jQuery?的重复,因为上述帖子不回答此问题。
目前的问题不是关于如何将>
等html实体名称解码为>
。这很简单。
当前的问题是提取HTML,可能包含可能包含可编码值的文本节点,我不希望任何这些值被格式化/编码无论如何。
答案 0 :(得分:3)
尝试这一点,强制jQuery解码一个不会附加到DOM的元素上的html。
var html = jQuery('<textarea/>').html(jQuery('#parent').html()).text();
console.log(html)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="parent">
<div id="child"></div>
5 > 3
</div>
答案 1 :(得分:2)
如果您正在寻找一种简单的JS方法,那么迭代childnode
的{{1}}并连接它们的值
<强>演示强>
parent
var html = "";
[].slice.call(document.getElementById("parent").childNodes).forEach(function(item) {
html += (item.nodeType == 3 ? item.nodeValue : item.outerHTML);
});
console.log(html);