【问题标题】:jQuery how to do things simultaniouslyjQuery如何同时做事
【发布时间】:2012-10-15 18:49:06
【问题描述】:

我似乎无法弄清楚如何以一种好的方式执行以下操作。

我需要淡出图像。 更改图像的来源。 然后将其淡入。

但问题是淡出和淡入应该同时出现。 当然,我现在这样做的方式(向下阅读几行)会在淡出期间更改源,这非常明显。

$('#lightboxImage').fadeOut('slow');
$('#lightboxImage').attr('src', 'an imagesource');
$('#lightboxImage').fadeIn('fast');

当我刚刚运行它时。它会在淡出之前更改图像。

当我将第二行放在 fadeOut 回调函数中时。在新图像淡入之前有一小段白屏。

希望有人可以帮助我解决这个问题。 :)

【问题讨论】:

    标签: jquery image fadein fadeout


    【解决方案1】:

    排队就行了:

    $('#lightboxImage').fadeOut('slow', function () {
      $(this).attr('src', 'an imagesource').fadeIn('fast');
      });
    });
    

    使用 $(this) 一次又一次地找不到它。

    编辑:更新了我的答案,因为 attr 函数没有回调。谢谢大家。

    【讨论】:

    • 很高兴知道这里出了什么问题,因此我的回答被否决了。它可以帮助人们。
    • 我认为您可能被否决了,因为您刚刚复制了其他答案并将$('#lightboxImage') 更改为$(this)。实际上,它应该是对其他答案的评论,而不是单独的答案——它与其他任何答案都没有任何不同。它只是浪费空间。
    • @ThomasClayson 他并没有真正复制任何答案,但他错误地尝试为attr 定义回调,我认为这是不允许的。所以@pulkit,我认为你因为错误的答案而被否决了,attr 没有回调。
    【解决方案2】:

    使用回调函数。

    $('#lightboxImage').fadeOut('fast', function() {
        $('#lightboxImage').attr('src', 'an imagesource').fadeIn('fast');
    });
    

    wikipedia page 很好地解释了回调函数。

    在计算机编程中,回调是对可执行代码的引用, 或一段可执行代码,作为参数传递给其他 代码。这允许较低级别的软件层调用子程序 (或函数)在更高级别的层中定义。

    【讨论】:

    • 虽然在某种程度上是我想去的方式,但仍有一小段时间屏幕是空的。我需要做的几乎与此页面上的完全一样:fabriq.nl/moon-thinsulate-jas-navy-pf-12106.html 如果您单击主图像,则会弹出一个灯箱。然后按下一个按钮。你在这里看到的过渡就是我正在寻找的。​​span>
    • 尝试将淡出时间从slow 更改为fast,看看是否是您想要的。 :)
    【解决方案3】:

    我不知道人们给出的答案是不是你想要的。

    我认为您希望第一张图片“淡入”第二张图片。

    在这种情况下,您需要有两张图片,一张在一张后面。

    后面的需要在 css 中为 display: none

    那么你可以这样做:

    $('img#image1').fadeOut();
    $('img#image2').fadeIn();
    

    第一张图片应该淡入第二张。

    您需要绝对定位这两张图片,以便前景一张在淡入淡出之前覆盖背景一张。

    例如http://jsfiddle.net/vre4M/

    这也可以让你来回前进:http://jsfiddle.net/vre4M/1/

    【讨论】:

    • 啊,是的,这正是我需要做的。问题是代码非常复杂(我对 jQuery 和 magento 都很陌生。)谢谢你的例子,我会看看我能走多远:)
    【解决方案4】:

    您应该使用fadeOut 回调函数。见下文,

    $('#lightboxImage').fadeOut('slow', function () {
       // Callback function that will be called after fadeOut
       $('#lightboxImage').attr('src', 'an imagesource').fadeIn('fast');
    });
    

    以下来自 jQuery 文档,

    .fadeOut( [duration] [, easing] [, callback] )

    • durationA 字符串或数字确定动画将运行多长时间。
    • easingA 字符串,指示用于过渡的缓动函数。
    • callback动画完成后调用的函数。

    【讨论】:

    • 在设置 src 之前,您可能需要在带有 FadeIn 部分的图像上设置 onLoad-callback。
    • @PerSalbark 这带来了它自己的一系列问题,因为 jQuery 无法正确检测缓存图像的加载,而开发人员没有一些诡计多端的操作。最好只将图像与文档一起预加载。
    • 不是吗?我从来没有遇到过任何问题。你能链接到有的人吗?
    • @PerSalbark Certainly.
    • @Blazemonger:好的,那是我已经设置了 src 的时候。在这种情况下,他将其设置为功能的一部分,所以我认为他会没事的。
    猜你喜欢
    • 2016-04-08
    • 2013-11-10
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2015-10-11
    相关资源
    最近更新 更多