javascript - 依次淡出然后淡入

标签 javascript jquery fade

我正在尝试淡出一张图像,然后在同一位置淡入另一张图像。

到目前为止我已经得到了这个fiddle ,但是当通过单击拇指更改图像时,您可以看到它在 .fadeOut() 函数完成之前更改了图像。我读到 jQuery 并不按标准顺序运行(我的代码假设它是这样),所以我尝试添加已完成的函数,如下所示:

$('#image').fadeOut('fast', function() {
    $('#image').html('<a href="' + image + '" data-lightbox="image-1" data-title="' + title + '"><img src="' + image + '" class="image"/></a>');
    $('#image').fadeIn('fast');
});

但是我的问题仍然存在。我应该怎么做才能解决这个问题?

最佳答案

我不会破坏并重新创建元素;我只是更新属性。我还会添加一个 .stop(true, true) 来取消之前的任何动画并在开始淡出之前直接跳到末尾,以防有人快速点击。

var images = [
  '/image/uClcV.jpg?s=328&g=1',
  'https://www.gravatar.com/avatar/d050da3cf82fdf6cfa431358fee9a397?s=128&d=identicon&r=PG&f=1',
  'https://www.gravatar.com/avatar/ca3e484c121268e4c8302616b2395eb9?s=128&d=identicon&r=PG'
];
var current = 0;
updateImage(images[current], images[current]);

function updateImage(image, title) {
  var img = $('#image');
  img.stop(true, true).fadeOut('fast', function() {
    img.find('a').attr('href', image).attr('title', title);
    img.find('img').attr('src', image);
    img.fadeIn('fast');
  });
}

$("#next").click(function() {
  current = (current + 1) % images.length;
  updateImage(images[current], images[current]);
});
<input type="button" id="next" value="Next">
<div id="image">
  <a>
    <img style="height: 128px; width: 128px"><!-- Never do that, but for a demo, it's okay -->
  </a>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

关于javascript - 依次淡出然后淡入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31118769/

相关文章:

javascript - selenium 没有点击链接,而在 javascript 上,链接被完美点击

javascript - 为什么我的函数在延迟后不删除元素?

javascript - vuejs 2观察不起作用

javascript - 使用框输入重定向页面

javascript - 自定义 jCarousel 触发器 - 项目结束

javascript - 在不知道 div 宽度的情况下水平居中 div,可能吗?

javascript - 如何在谷歌地图中显示经度和纬度(矢量变化)

javascript - 从 AJAX 获取字符串

javascript - 按钮淡入/淡出故障/不工作。

html - 淡入淡出过渡