【问题标题】:Converting single quotes to double quotes inside a title attribute在标题属性内将单引号转换为双引号
【发布时间】:2011-08-11 22:31:39
【问题描述】:

我有一个带有双引号标签的图像标题,我需要将其转换为单引号以用于照片幻灯片。除了属性名称之外,我没有其他选项可以更改,因此我无法转义值内的引号。

这是我的html:

<div  id="image-gallery">
<img alt="Alt Text" src="photo.jpg" title="Title <a href="#link">here</a>" />
</div>

我尝试过获取标题并使用替换将双引号更改为单引号,如下所示:

mystr=string = $("#image-gallery img").attr('title');
mystr=mystr.replace(/\"/g,'\'');

不过,在第一个双引号之后,标题仍然会掉线。有什么想法吗?

谢谢!

【问题讨论】:

  • 您不能将 HTML 放在属性文本中并期望它起作用。它不会。 title 属性不能包含标记,所以无论如何你都必须去掉它。
  • 如果你想要这个,我建议你使用一些支持 HTML 工具提示的工具提示库。应该不难找到。

标签: javascript jquery


【解决方案1】:

当您生成图像时,您需要对值进行HTML 编码。我不知道你是手动输入img 标签还是通过服务器端脚本生成它,但它应该看起来像这样:

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

【讨论】:

  • 很遗憾,我目前无法执行此操作,我无权更改返回的内容。
  • 您提供的标记已损坏。我怀疑它实际上是 in the DOMtitle 属性中的HTML。查看 Firebug 或类似的图像,您会发现问题;我怀疑您的标题已转换为“标题
【解决方案2】:

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标签中。

【讨论】:

    【解决方案3】:

    如果不能改双引号,就用单引号把title字段包起来:

    <img alt="Alt Text" src="photo.jpg" title='Title <a href="#link">here</a>' />
    

    【讨论】:

      【解决方案4】:

      很抱歉,我认为您正在寻找的东西是不可能的。

      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="
      

      其余的位于其他属性中。

      【讨论】:

        【解决方案5】:
            <html>
            <body>
        
            <script type="text/javascript">
        
            document.write(escape("<img src=\"http://www.google.com\" />"));
        
            </script>
        
            </body>
            </html>
        

        JDevEscaping characters in JavaScript single and double quotes的回答

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多