在悬停时交换图像时如何淡化“this.src.replace”(jQuery)

时间:2012-07-17 09:59:32

标签: javascript jquery image

  

可能重复:
  jQuery fade to new image

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

$(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()方法,但似乎都没有工作,或者只是为了几个鼠标而工作,然后替换一个空白图像。

1 个答案:

答案 0 :(得分: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;}