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。