【问题标题】:Changing Multiple Image Trouble on Mouse over鼠标悬停时更改多个图像问题
【发布时间】:2014-02-25 15:02:42
【问题描述】:

我无法在鼠标悬停时更改多个图像。我尝试了下面的功能来更改鼠标悬停时的图像,但效果不佳。在 Onmouseover 事件中,第一个图像慢慢淡出,然后第二个图像平滑淡入。几秒钟后,第二张图像慢慢淡出,第三张图像平滑淡入。

function changeimage(img_id)
{
setTimeout(function(){ $("#"+img_id).attr("src","http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_03.jpg").show(); }, 5000);
    $("#"+img_id).attr("src","http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_05.jpg").fadeIn(5000);
    setTimeout(function(){ $("#"+img_id).attr("src","http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_05.jpg").show(); }, 5000);
    $("#"+img_id).attr("src","http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_05.jpg").fadeOut(5500);
}

Jsfiddle 链接:

http://jsfiddle.net/XVz95/3/

【问题讨论】:

  • 也许您可以描述一下您期望它如何“完美”工作?!
  • JavaScript 在我看来过于复杂。你想达到什么目的。作为一个附带问题,在您的 HTML 中包含诸如“onmouseover”之类的内联事件是不好的做法 - 您应该使用 Javascript 附加这些事件
  • 鼠标悬停,我希望当前图像淡出,第二张图像淡入。几秒钟后,这张图像淡出,第三张图像必须淡入

标签: javascript jquery css


【解决方案1】:

我让你的 jsfiddle 链接正常工作:

function changeimage(img_id)
{
setTimeout(function(){ $("#"+img_id).attr("src","http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_03.jpg").show(); }, 5000);
    $("#"+img_id).attr("src","http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_05.jpg").fadeIn(5000);
    setTimeout(function(){ $("#"+img_id).attr("src","http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_05.jpg").show(); }, 5000);
    $("#"+img_id).attr("src","http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_05.jpg").fadeOut(5500);
}

http://jsfiddle.net/XVz95/4/

【讨论】:

  • 上面的js fiddle你可以看到第三张图片没有淡入淡出,图片的时间间隔也不均匀,请帮忙
【解决方案2】:

你可以在 jQuery 中这样做

标记:

 <div id="pdtimg_1">
     <img src="http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_03.jpg"/>
    <img src="http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_05.jpg" style="display: none;"/>
</div>

javascript:

$( document ).ready(function() {
    $('#pdtimg_1').mouseover(function(){
        $(this).find('img:first').hide();
        $(this).find('img:last').show();
    });

    $('#pdtimg_1').mouseout(function(){
        $(this).find('img:first').show();
        $(this).find('img:last').hide();
    });
});

http://jsfiddle.net/CabK3/

-----------------------更新----------- --------

$( document ).ready(function() {
$('#pdtimg_1').mouseover(function(){
    var elem  = $(this);
    elem.find('img:first').fadeOut(5000, function() {
        elem.find('img:nth-child(2)').fadeIn(5000, function() {
             elem.find('img:nth-child(2)').fadeOut(5000); 
            elem.find('img:last').fadeIn(5000);
        });
    });


});

});

<div id="pdtimg_1">
<img src="http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/men-wedding-rings.jpg"/>

<img src="http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_03.jpg" style="display: none;"/>
    <img src="http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_05.jpg" style="display: none;"/>

【讨论】:

  • 三个图像是他们的,图像 id 是动态的,所以请编辑我的 js fiddle 和帮助
  • 你的js小提琴链接中的一些时间问题。我希望所有三个图像都应该淡入和淡出。我认为在上面的链接中进行更多的编辑可以实现这一点
  • 玩时间,看看你能做什么,如果你在 10 或 20 分钟内没有成功。我会更新的。
【解决方案3】:

这就是你想要的吗?它允许一系列图像源,以防您需要添加更多图片:

function changeImage(img) {
    var imgSrcArr = [];
    imgSrcArr.push("http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/men-wedding-rings.jpg");
    imgSrcArr.push("http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_03.jpg");
    imgSrcArr.push("http://247nywebdesign.com/Testing/nurses-jewel/php/pdt_images/prdt_05.jpg");

    $img = $(img);
    if ($img.is(":visible")) {
        $img.fadeOut(5500, function() {
            var i = imgSrcArr.indexOf($(this).attr("src"));
            i = i+1 >= imgSrcArr.length ? 0 : i+1;
            $(this).attr("src", imgSrcArr[i]).on('load', function() {$(this).fadeIn(5000)})
        });
    } else {
        $img.fadeIn(5000);  
    }
}

$("#pdtimg_1").mouseenter(function() {changeImage(this)});

jsFiddle example

【讨论】:

  • 你几乎没问题。我认为第二张图片不会在上面的 jsfiddle 中消失。
  • 我刚刚检查过了,确实如此。我在编辑中切换了顺序,请再次检查。
  • 没有一个图像丢失。请检查。数组中的一个图像不会淡入。请帮助。
  • 嗯,也许你的图片加载速度没有我的那么快。立即尝试。
猜你喜欢
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
相关资源
最近更新 更多