jQuery的HTML()函数解码HTML实体

问题描述:

有没有任何方法可以获取元素的HTML而不需要解码HTML实体?jQuery的HTML()函数解码HTML实体

我使用jQuery的html的()方法目前却解码HTML实体

它不是JQuery的这样做,但浏览器的HTML解析器。所以答案是否定的。

好的,所以我想我有一个答案你的问题。

我正在使用ajax浏览xml文件并在文本区域中创建代码以将其复制到html文件中。不要问为什么,我只是说IT在这里是限制性的。无论如何,看起来像这样需要链接列表:

<a href="link.html#!page=01">Something</a> 

很好的.html()是使它看起来像这样:

<a href="link.html#%21page=01">Something</a> 

这导致问题的页面加载。我猜浏览器会改变%21 =>!在页面加载后。

你需要做的是使一个变量出你想要为.html()这样的东西:

var prepReplaceEscape = $("#prep").html(); 

然后把它放在你想要的地方,并使用.replace():

$("#output").text(prepReplaceEscape.replace(/%21/gi,"!")); 

重要的是要有/%21/gi这允许.replace()方法继续通过var。 “%21”就是你想要替换的。

我希望这会有所帮助。这有点乱,但它对我有用。

如果有人有更好的解决方案,请让我知道,我很想知道。

我用同样的问题所困扰我使用的是所见即所得的编辑器,并使用

<texarea id="htmlsource"><p>hello html</p></textarea> 

<script> 
var source= $("#htmlsource").html(); 
alert(source); 
</script> 

它编码的HTML到GT & LTP &世界,你好& LT/P的时候& GT 这不是当使用.html()函数时,我期待什么。从逻辑上讲,你会希望输出是HTML,而不是可读文本的编码字符串。

我在Chrome,IE9和Firefox7中测试了这一切,结果相同。要解决这个问题,你可以使用.text()函数。疯了吧?!

<texarea id="htmlsource"><p>hello html</p></textarea> 

<script> 
var source= $("#htmlsource").text(); 
alert(source); 
</script> 

所以答案是YES你可以。

更新:我已经创建了一个解决方案的权威性指南,作为fiddle here