如何防止jQuery .html()自动转义href属性?

时间:2012-02-04 18:35:48

标签: jquery templates

更新:看起来像TimWolla评论的浏览器特定行为 - 我应该如何以跨浏览器的方式可靠地规范化非转义版本?

HTML:

<div id="test"><a href="#{one}">#{two}</a></div>

JS:

$('#test').html()
=> <a href="#%7Bone%7D">#{two}</a>

请注意,href中的#{one}已转义,而#{two}则未转义。

有没有比unescape整个字符串更好的方法?

unescape($('#test').html())
=> <a href="#{one}">#{two}</a>

以下是示例:http://jsfiddle.net/kenn/n8veL/

2 个答案:

答案 0 :(得分:1)

首先,我怀疑你的问题是否有可靠的解决方案。根本原因很简单:因为下面工作的Element.innerHTML是非标准的,它完全取决于浏览器的实现。

如果您需要可靠的解决方案,我建议您使用DOM操作而不是模板

答案 1 :(得分:0)

如果您要在元素上通过JavaScript执行扩展,可以将“href”模板放在单独的属性中。

<a href='#dummy' data-href='#{template}'>Hi</a>

然后只需从data属性扩展并将结果放入真正的“href”。