0

可能重复:
jQuery 淡入淡出到新图像

我有以下代码可以在悬停时交换(预加载)图像:

$(document).ready(function() { 
$(".pf-item img").hover(
      function(){this.src = this.src.replace(".jpg","-h.jpg");},
      function(){this.src = this.src.replace("-h.jpg",".jpg");
 });
 var imgSwap = [];
 $(".img-swap").each(function(){
    imgUrl = this.src.replace(".jpg","-h.jpg");
    imgSwap.push(imgUrl);
});
$(imgSwap).preload();
});
$.fn.preload = function() {
this.each(function(){
    $('<img/>')[0].src = this;
});
}

它工作得非常好,但是我希望能够在图像 .jpg 和 -h.jpg 之间淡化。

有谁知道如何做到这一点/有更好的方法来解决这个问题?我尝试了很多不同的 fadeIn() 方法,但似乎都不起作用,或者工作了几次悬停,然后替换空白图像。

4

1 回答 1

2

我建议使用 mouseover/mouseout 方法。

我的 HTML 是这样设置的。

<div class="imageWrap">
    <img class="shown" src="image-1.jpg" width="300" height="300" />
    <img class="hidden" src="image-2.jpg" width="300" height="300" />
</div>

然后使用 jQuery 你可以像这样在它们之间交换

$(".imageWrap").mouseover(function() {
    $(this).children(".shown").fadeOut("fast");
    $(this).children(".hidden").fadeIn("fast");
});

$(".imageWrap").mouseout(function() {
    $(this).children(".shown").fadeIn("fast");
    $(this).children(".hidden").fadeOut("fast");
});

不要忘记你的CSS

.imageWrap {width:300px; height:300px;}
.imageWrap > img {position:absolute;}
.imageWrap > .hidden {display:none;}
于 2012-07-17T10:05:09.607 回答