.delay()函数不适用于attr()函数

时间:2013-03-15 09:32:22

标签: javascript jquery

我的网站上有一些图像,我希望隐藏它们,更改显示的图像并显示回来,但新图片会立即显示。我不知道该怎么做。

这是javascript:

$(document).ready(function() {
  $('.show').click(function() {
    $(this).removeClass("show").addClass("clickedShow");
    $('.show').animate({opacity: 0}, 1000);
    $(this).delay(1000).animate({opacity: 0}, 1000);

    $(this).animate({opacity: 1}, 1000).attr("src", "pic2.png");
    $('.show').delay(1000).animate({opacity: 1}, 1000).attr("src", "pic2.png");
  });
});

2 个答案:

答案 0 :(得分:4)

delay仅适用于可排队的动画,attr未排队,因此不受delay的影响。如果您想在动画结束时执行某些操作,请将操作添加到animation回调。

$(this).animate({opacity: 1}, 1000, function(){$(this).attr("src", "pic2.png")});

答案 1 :(得分:0)

.delay()方法最适合延迟排队的jQuery效果。因为它是有限的 - 例如,它没有提供取消延迟的方法。

因此,您可以尝试使用排队的jQuery效果,并在它们之间使用.delay(1000)。像:

$("button").click(function() {
      $("div.first").slideUp(300).delay(800).fadeIn(400);
      $("div.second").slideUp(300).fadeIn(400);
    });</script>