当鼠标悬停在图像上方时,我正在尝试更改图像的 src 属性。这个JQuery代码不应该工作有啥原因吗?

Posted

技术标签:

【中文标题】当鼠标悬停在图像上方时,我正在尝试更改图像的 src 属性。这个JQuery代码不应该工作有啥原因吗?【英文标题】:I'm trying to change an Image's src attribute when the mouse hovers above it. Is there a reason why this JQuery code shouldn't work?当鼠标悬停在图像上方时,我正在尝试更改图像的 src 属性。这个JQuery代码不应该工作有什么原因吗? 【发布时间】:2011-04-11 07:17:21 【问题描述】:
$('.icon1').mouseover(function()
   $(this).find('img').attr('src', 'recursos/botban/maq1.png');
);

应该可以正常工作吗?这只是一个随意的测试,看看有什么问题,但它仍然坏了。

我也试过$('.icon1').hover(function()...,还是不行。

我真正想要的更像是……

$('.icon1').mouseover(function()
        var alt = $(this).find('img').attr('src')+'.png';
        $(this).find('img').attr('src', $(this).attr('id')+''.png);
).mouseout(function()
        $(this).find('img').attr('src', alt);
);

每张图片的html如下...

<a class='icon1'><img src='recursos/botban/veh1.png'></a>

【问题讨论】:

什么是.icon1? :) 标记在这里会有所帮助。 另外,你确定使用相对路径是你想要的吗? @serv 你确定它应该是recursos/botban/maq1.png 而不是/recursos/botban/maq1.png 您的 img 标签没有关闭,但这可能只是一个错字。 页面上的任何其他 javascript 是否可以工作?您可能在某处出现语法错误,因此没有脚本在运行? 【参考方案1】:

有几件事,我会使用mouseenter 而不是mouseover(因为mouseout 会在进入孩子时触发),并确保它在document.ready 处理程序中运行,如下所示:

$(function() 
  $('.icon1').each(function()
    $.data(this, 'src', $(this).find('img').attr('src'));
  ).hover(function()
    $(this).find('img').attr('src', this.id + '.png'); //may need adjustment
  ).mouseout(function()
    $(this).find('img').attr('src', $.data(this, 'src'));
  );
);

我不确定究竟你想要什么悬停图像,但一般的方法是存储它原来的内容并使用,然后在mouseleave 上恢复它。或者,只需将hover 放在&lt;img&gt; 本身上,如下所示:

$(function() 
  $('.icon1 img').each(function()
    $.data(this, 'src', this.src);
  ).hover(function()
    this.src = 'otherImage.png';
  ).mouseout(function()
    this.src = $.data(this, 'src');
  );
);

【讨论】:

它一直在 document.ready 中运行,但这并没有给我任何帮助:/ @serv-bot - 它在做什么...你是在动态加载这个.icon1,例如通过 ajax? .icon1 没有被动态加载。它真的什么也没做;图像保持静止。 图像也在一个 div 框中,虽然我真的不认为这很重要。 @serv-bot - 页面上是否有任何 JavaScript 错误?检查控制台,听起来这根本没有运行,至少不是没有错误。【参考方案2】:
(function($)   // private closure;  
    $(function()   // document load;
        $('.icon1').hover(function()
            $(this).find('img').attr('src', "recursos/botban/veh1.png");
        , function()
            $(this).find('img').attr('src', "recursos/botban/veh2.png");
        );
 );
)(jQuery);

【讨论】:

对不起,我已经尝试过了,但它不起作用。我在帖子中说过。 你确定这些图片确实存在(在那个路径中)? 即使没有,浏览器至少应该显示损坏的图像符号。

以上是关于当鼠标悬停在图像上方时,我正在尝试更改图像的 src 属性。这个JQuery代码不应该工作有啥原因吗?的主要内容,如果未能解决你的问题,请参考以下文章

图片鼠标悬停上的文字?

使用 CSS - ExtJs 进行鼠标悬停时如何更改面板上的图像?

使用CSS - ExtJs进行鼠标悬停时如何更改面板上的图像?

Wordpress 将鼠标悬停在图像上

使用css将鼠标悬停在按钮上时如何更改站点背景图像?

鼠标悬停更改图像位置和大小