【问题标题】:How to set image src to empty? [duplicate]如何将图像 src 设置为空? [复制]
【发布时间】:2012-11-23 11:27:12
【问题描述】:

可能重复:
Setting image src attribute not working in Chrome

当用户点击“删除”链接时,我需要将图像的src 属性设置为空。当我使用

$('#img').prop('src', null);

src不为空,而是指向当前url

如果我使用

删除 src
$('#img').removeProp('src');

以后不要让我再分配它

最好的方法是什么?

【问题讨论】:

  • 请看this answer
  • 空字符串实际上可以是图像的有效 src,从技术上讲,它不是“删除” src。与# 相同,它将使用当前 URL 加上哈希。真实示例:lcamtuf.coredump.cx/squirrel 您最终会向当前 URL 发送请求。我建议使用另一种方法。

标签: javascript jquery image


【解决方案1】:

尝试使用attr()

Live Demo

$('#img').attr('src', '');

因为你有 id 选择器。使用本机 javascript 方法 document.getElementById 将为您带来更多性能优势。此外,您可能需要将# 设置为src 而不是empty 字符串。

document.getElementById('img').src = "#";

【讨论】:

  • 恐怕这行不通。仍然指向当前 url 而不是空值。
  • 我已经在我的答案中添加了现场演示,检查它是否有效
  • 显然是 Chrome 的问题。
  • 从 javascript 的角度来看这是可行的,现在对我来说已经足够了。谢谢!
【解决方案2】:

我只需访问底层<img> 节点并将src 的值设置为空字符串

$('#img')[ 0 ].src = '#';

小提琴:http://jsfiddle.net/P4pRu/


更新:当我们只传入一个 空字符串 时,似乎 Chrome 并不满意。 Firefox 仍然显示出预期的行为(我很确定这在几周前/版本之前也适用于 Chrome)。

但是,例如,传递 # 可以正常工作。


更新 2:

即使imgNode.removeAttribute('src'); 也不再删除 Chrome 中图像的视觉表示(有趣...)。

【讨论】:

  • 恐怕这行不通。仍然指向当前 url 而不是空值。
  • @TimmyO'Tool:确实。在我看来,奇怪的行为是“新的”。但是,例如,如果您传入 #,它会起作用。
  • 空字符串实际上可以是图像的有效 src,从技术上讲,它不是“删除” src。与# 相同,它将使用当前 URL 加上哈希。真实示例:lcamtuf.coredump.cx/squirrel 您最终会向当前 URL 发送请求。
【解决方案3】:

属性“src”并不是真正的属性,它是一个属性。将属性视为可以使用布尔值或列表进行设置的事物,而属性则视为更具动态性的事物。

$('#img').attr('src', '');

从 jQuery 1.6 开始,.prop() 方法提供了一种显式检索属性值的方法,而 .attr() 检索属性 - http://api.jquery.com/prop/

【讨论】:

  • 测试你的答案,它不起作用(尽管你的笔记是正确的)。
  • 是的,确实如此。刚刚在 jsfiddle 中测试过 - jsfiddle.net/aAfvx/1
  • 看起来是 Chrome 的问题,在 Chrome 中尝试一下。
猜你喜欢
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
相关资源
最近更新 更多