【问题标题】:Slashes removed from variable从变量中删除斜线
【发布时间】:2013-03-14 00:32:07
【问题描述】:

我有一个从图像的源属性中获取的变量。当我使用样式标签将该变量设置为元素的背景时,所有的斜线都会被删除。这是我的一些代码:

var logo    =   $('.logo-list li.selected-logo img').attr('src');
$('.stage').append('<div class="doc-header"><div class="product-logo"></div><div class="logo-small" style="background:url('+logo+');"></div></div>');

当我为变量“logo”设置警报时,它看起来很好: http://www.example.com/images/img.jpg

但是当 jQuery 附加代码时,背景属性的 URL 是这样的:http:example.com images img.jpg

由于某种原因,斜线被删除/转义,我只是不知道为什么。有人能解释一下吗?

【问题讨论】:

  • 尝试使用encodeURIComponent(logo)
  • 似乎在 url 之前有一个不应该存在的双引号
  • 你的双引号也太多了。 style="background:"url('+logo+');"background: 之后不应有双引号
  • 感谢双引号中的提醒。我在我的代码中删除了它并编辑了我的问题。 @BradM 与 encodeURIComponent(logo) 很接近,但它实际上对 url 进行了编码,就像这样 http%3A%2F%2F... 至少斜杠在那里。

标签: jquery html css


【解决方案1】:

感谢@BradM 的建议,我能够使用 decodeURIComponent 修复它。

var logo    =   $('.logo-list li.selected-logo img').attr('src');
var logo    =   decodeURIComponent(logo);

【讨论】:

    【解决方案2】:

    您的问题是"background:"url 此处有一个额外的双引号。删除第二个双引号,应该可以正常工作

    DEMO

    【讨论】:

    • 这不是问题。我需要使用 decodeURIComponent。
    • @ReLeaf:如果您查看我的演示,您会发现删除多余的引号对我有用。
    • 我明白了,但是做出这样的改变并没有解决我的问题。如您所见,如果您在演示中添加一个额外的双引号,它不会删除那些斜杠,它只会编写格式错误的 HTML。正如我之前所说,我需要使用 decodeURIComponent 来防止不必要地删除正斜杠。我应该注意,我上面提供的代码是一个更大的函数的一小部分,我没有包含在我的问题中。也许那个更大的函数中的某些东西导致了 URL 的问题。无论如何,感谢您的帮助。
    • @ReLeaf:添加额外的双引号让我可以重现您描述的完全相同的问题jsfiddle.net/4KSgj/5。 (使用任何浏览器开发工具来检查 html)。无论如何,我很高兴你解决了这个问题,如果你确定 decodeURIComponent 是解决你的问题所必需的,考虑到我可能遗漏的一些上下文,我会假设你是正确的。
    猜你喜欢
    • 2011-01-16
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 2014-07-23
    • 2018-10-02
    • 2011-02-28
    相关资源
    最近更新 更多