如何使用 jQuery 缓慢淡出 div,更新内容,然后缓慢淡入 div?

发布于 2024-11-05 03:21:32 字数 441 浏览 0 评论 0原文

我有一个 div 我想要淡出,更新其内容,然后淡入。到目前为止,我已经尝试过:

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID'>" + content + "</div>");
    $('#myDivID').fadeIn('slow');
});

发生的情况是淡出完成并调用匿名回调。到目前为止,一切都很好。

div 的内容已正确替换,但 fadeIn() 效果是立即的 — 没有平滑过渡,只是快速、敏捷地跳转到更新的 div< /代码>。

有更好的方法来实现这一点吗?谢谢你的建议。

I have a div I want to fade out, update its content, and then fade back in. So far I have tried:

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID'>" + content + "</div>");
    $('#myDivID').fadeIn('slow');
});

What happens is that the fade out completes and calls the anonymous callback. So far, so good.

The div's content is replaced correctly, but the fadeIn() effect is immediate — no smooth transition, just a quick, snappy jump to the updated div.

Is there a better way to accomplish this? Thanks for your advice.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

怎樣才叫好 2024-11-12 03:21:32

您应该这样做(这有效,是经过测试的代码):

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').html(content);
    $('#myDivID').fadeIn('slow');
});

您的代码不起作用,因为新创建的 div 立即可见。另一个解决方案是添加一个 display:none ,如下所示:

   $('#myDivID').fadeOut('slow', function() {
      $('#myDivID').replaceWith("<div id='myDivID' style='display:none'>" + content + "</div>");
      $('#myDivID').fadeIn('slow');
  });

希望这有帮助
干杯

You should do it this way (this works, is tested code):

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').html(content);
    $('#myDivID').fadeIn('slow');
});

Your code wasn't working because the new created div is instantly visible. Another solution is to add a display:none like the following:

   $('#myDivID').fadeOut('slow', function() {
      $('#myDivID').replaceWith("<div id='myDivID' style='display:none'>" + content + "</div>");
      $('#myDivID').fadeIn('slow');
  });

Hope this helps
Cheers

蓬勃野心 2024-11-12 03:21:32

使用 SetTimeOut

setTimeout(function() { $('#myDivID').fadeIn('slow'); }, 5000);

这可以工作

jsFiddle
http://jsfiddle.net/3XYE6/1/

$('#doit').click(function(){
    $('#myDivID').fadeOut('slow', function() {
        $('#myDivID').html('New content in MyDiv ('+Math.random()+')')
        setTimeout(function() { $('#myDivID').fadeIn('slow'); }, 5000);
    });    
})

use SetTimeOut

setTimeout(function() { $('#myDivID').fadeIn('slow'); }, 5000);

this works

jsFiddle
http://jsfiddle.net/3XYE6/1/

$('#doit').click(function(){
    $('#myDivID').fadeOut('slow', function() {
        $('#myDivID').html('New content in MyDiv ('+Math.random()+')')
        setTimeout(function() { $('#myDivID').fadeIn('slow'); }, 5000);
    });    
})
何以畏孤独 2024-11-12 03:21:32

当您使用 ReplaceWith 时,内容将可见,这就是为什么没有平滑过渡的原因。

首先隐藏 div,然后调用 fadeIn 将实现平滑过渡。

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID' style='display:none'>" + content + "</div>");
    $('#myDivID').fadeIn('slow');
});

When you use replaceWith the content will be visible that is why there is no smooth transition.

First hiding the div and then calling fadeIn will give smooth transition.

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID' style='display:none'>" + content + "</div>");
    $('#myDivID').fadeIn('slow');
});
爱,才寂寞 2024-11-12 03:21:32

试试这个。

http://jsfiddle.net/X3cnT/

$('#myDivID').fadeOut('slow', function() {
        $('#myDivID').html("all this text");
        $('#myDivID').fadeIn('slow');
});

Try this.

http://jsfiddle.net/X3cnT/

$('#myDivID').fadeOut('slow', function() {
        $('#myDivID').html("all this text");
        $('#myDivID').fadeIn('slow');
});
旧情别恋 2024-11-12 03:21:32

像这样的东西会起作用:

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID'>" + content + "</div>")
    $('#myDivID').hide().delay(2000).fadeIn('slow'); 
});

在这里测试: http://jsfiddle.net/tomgrohl/PgcTZ/

我已将隐藏置于延迟之前以使动画正常工作。

Something like this would work:

$('#myDivID').fadeOut('slow', function() {
    $('#myDivID').replaceWith("<div id='myDivID'>" + content + "</div>")
    $('#myDivID').hide().delay(2000).fadeIn('slow'); 
});

Test here: http://jsfiddle.net/tomgrohl/PgcTZ/

I've put the hide before the delay to make the animation work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文