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

发布于 2024-09-18 09:40:06 字数 643 浏览 7 评论 0原文

$('.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').mouseover(function(){
   $(this).find('img').attr('src', 'recursos/botban/maq1.png');
});

Should work right? It's just an arbitrary test to see what was wrong, but it's still broken.

I've also tried with $('.icon1').hover(function(){..., and it also does not work.

What I really want is more like...

$('.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);
});

The HTML for each image is as follows...

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秋日私语 2024-09-25 09:40:06

有一些事情,我会使用 mouseenter 而不是 鼠标悬停(自 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 放在 本身上,如下所示:

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

A few things, I'd use mouseenter instead of mouseover (since mouseout will fire when entering a child), and also make sure it's running inside a document.ready handler, like this:

$(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'));
  });
});

I'm not sure exactly what hover image you want, but the general approach is to store what it was originally and use than then restoring it on mouseleave. Or, just put the hover on the <img> itself, like this:

$(function() {
  $('.icon1 img').each(function(){
    $.data(this, 'src', this.src);
  }).hover(function(){
    this.src = 'otherImage.png';
  }).mouseout(function(){
    this.src = $.data(this, 'src');
  });
});
因为看清所以看轻 2024-09-25 09:40:06
(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);
(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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文