【发布时间】:2011-11-07 18:43:22
【问题描述】:
我正在使用 jQuery 的 .data() 来处理自定义 HTML5 数据属性,其中属性的值需要能够同时包含单引号和双引号:
<p class="example" data-example="She said "WTF" on last night's show.">
我知道在数据属性值中使用像&quot; 这样的字符代码可以使上述工作正常进行,但我不能总是控制值的输入方式。另外,我需要能够在标记中使用 HTML 标签,如下所示:
<p class="example" data-example="
She said "<abbr title="What The F***">WTF</abbr>" on last night's show.
">
如果某种形式的.replace() 是答案,那么它需要在.data() 读取值之前完成——也许通过将它应用于整个<body>?
像<abbr title="te\'st">WTF</abbr> 这样的普通反斜杠转义也不起作用。
理想情况下,这将具有同时工作的灵活性:
data-example="..."
和
data-example='...'
但如果只有一种方式可行,那么我至少可以顺其自然。想法?
更新 - 更多上下文:
我正在为responsejs.com 工作。一个实际的应用可能是只为超过一定宽度的浏览器加载侧边栏(并在浏览器而不是 PHP 中处理)。以 WordPress 为例,侧边栏可以包含小部件、图像等。PHP 标记中的引号是非问题 b/c,它们在到达浏览器之前会被解析为 HTML。示例:
<aside id="primary" class="sidebar"
data-oweb='
<?php dynamic_sidebar( 'primary' ); ?>
'
>
optional default markup for mobile and no-js browsers here
</aside>
【问题讨论】:
-
JavaScript 在页面渲染后将无法帮助您修复标记的引号。必须在服务器端完成。
标签: javascript jquery html escaping quotes