【发布时间】:2015-01-10 05:16:05
【问题描述】:
我知道这个问题之前已经回答过了,但是即使在查阅了这些链接之后,我仍然无法解决我的问题。我想用一个类将我的图像(assets/img/social-mail.jpg)替换为另一个(assets/img/social-mail-hover.jpg),因为我有多个图像我想这样做.我的基本思路是这样的:当类悬停时,获取 ID,并通过在其图像链接中添加“-hover”来替换其图像。
HTML:
<img id="social-mail" class="box-social" src="assets/img/social-mail.jpg">
JS:
$(".box-social").hover(function(e) {
var id = $(this).attr("id");
var icon = id.split("-")[1];
var image = "img/social-" + icon + "-hover.jpg";
$(id).find("img").attr("src", image);
});
我测试了 id、icon 和 image;他们都给了我我想要的东西。但是,当我将鼠标悬停在图像上时,它仍然没有被替换。我也没有收到任何错误。我究竟做错了什么?非常感谢!
【问题讨论】:
-
它需要是
$(this)或$('#'+id)才能使其成为合适的id 选择器...但是为此使用图像精灵和CSS! -
您将路径称为“assets/img/..”,但在您正在执行的脚本中:var image = "img/social-" + icon + "-hover.jpg"; .你确定你没有丢失路径中的“资产”吗?
-
你为什么使用
.find()?this已经引用了当前的 img。也不要使用.attr():this.src = image;应该这样做。 (另外,当连字符之前实际上是文件名的一部分时,为什么要使用.split()来表示连字符之后的部分?你不能用一个来完成所有事情吗?线路:this.src = "assets/img/" + this.id + "-hover.jpg";? -
@numbers1311407 刚刚添加了它,但它没有用。如果我纯粹将 CSS 与 :hover 一起使用,它会起作用,但我有六张图片并想用 JQuery 尝试一下。
-
@nnnnnn 说得对。
this是元素,你不需要find任何东西。无论如何,这是 CSS 和包含所有图像的单个图像精灵的典型场景。无需 JS。
标签: javascript jquery html image class