我有一个图片标题,其中包含带双引号的标记,我需要将其转换为单引号,以便在照片幻灯片中使用。我没有选择更改属性名称以外的任何内容,因此我无法转义值内的引号。
这是我的html:
<div id="image-gallery">
<img alt="Alt Text" src="photo.jpg" title="Title <a href="#link">here</a>" />
</div>
我尝试抓取标题并使用replace将双引号更改为单引号,如下所示:
mystr=string = $("#image-gallery img").attr('title');
mystr=mystr.replace(/\"/g,'\'');
虽然第一次双引号后标题仍然下降。有什么想法吗?
谢谢!
答案 0 :(得分:2)
生成图片时,您需要 HTML-encode 该值。我不知道你是手动输入img
标签还是通过服务器端脚本生成它,但它应该是这样的:
<img alt="Alt Text" src="photo.jpg"
title="Title <a href="#link">here</a>" />
答案 1 :(得分:1)
HTML是错误的/非法的。您无法使用javascript事后修复它,因为HTML的解析错误,因此数据永远不会被适当地放入DOM中。并且,由于非法HTML,您可能会在不同的浏览器中获得不同的结果。
您必须修复源HTML。它可以像这样修复:
<div id="image-gallery">
<img alt="Alt Text" src="photo.jpg" title='Title <a href="#link">here</a>' />
</div>
或者这个:
<div id="image-gallery">
<img alt="Alt Text" src="photo.jpg" title="Title <a href='#link'>here</a>" />
</div>
我不确定为什么你首先将HTML放在标题标签中。这不是打算如何使用。如果要从title标签中的文本生成链接,则应使用JS动态执行此操作,而不是从一开始就将HTML嵌入到title标记中。
答案 2 :(得分:0)
如果您无法更改双引号,只需使用单引号括起标题字段:
<img alt="Alt Text" src="photo.jpg" title='Title <a href="#link">here</a>' />
答案 3 :(得分:0)
我很遗憾地说我不认为你在寻找什么是可能的。
title属性已在a标记的第一个引号处停止。
在你的例子中:
<div id="image-gallery">
<img alt="Alt Text" src="photo.jpg" title="Title <a href="#link">here</a>" />
</div>
title属性仅包含:
title="Title <a href="
其余的属于其他属性。
答案 4 :(得分:0)
<html>
<body>
<script type="text/javascript">
document.write(escape("<img src=\"http://www.google.com\" />"));
</script>
</body>
</html>
JDev的答案Escaping characters in JavaScript single and double quotes