在title属性中将单引号转换为双引号

时间:2011-08-11 22:31:39

标签: javascript jquery

我有一个图片标题,其中包含带双引号的标记,我需要将其转换为单引号,以便在照片幻灯片中使用。我没有选择更改属性名称以外的任何内容,因此我无法转义值内的引号。

这是我的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,'\'');

虽然第一次双引号后标题仍然下降。有什么想法吗?

谢谢!

5 个答案:

答案 0 :(得分:2)

生成图片时,您需要 HTML-encode 该值。我不知道你是手动输入img标签还是通过服务器端脚本生成它,但它应该是这样的:

<img alt="Alt Text" src="photo.jpg" 
     title="Title &lt;a href=&quot;#link&quot;&gt;here&lt;/a&gt;" />

答案 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