Jquery替换褪色/动画

36 jquery

我知道有很多关于替换的问题,但似乎没有一个问题适用于我的情况.

HTML: <div id="foo"></div>

我希望#foo消失,然后我想用基本相同的东西替换整个东西(不仅仅是内容)<div id="foo"></div>.

谢谢

Ric*_*ton 68

$('#foo').fadeOut("slow", function(){
    var div = $("<div id='foo'>test2</div>").hide();
    $(this).replaceWith(div);
    $('#foo').fadeIn("slow");
});
Run Code Online (Sandbox Code Playgroud)

jsfiddle - http://jsfiddle.net/9Dubr/1/

已更新为正确淡入

  • 如果有人遇到同样的问题:注意`replaceWith()`在插入新内容之前删除内容.对于不可察觉的短时间段,自由空间由流中的其他元素填充.如果其中一个元素实际上触发了'mouseenter`的淡入淡出,那么该元素将从光标移开,然后返回"下",导致事件定期触发.要解决此问题,请将褪色元素包装在具有固定高度的div中(至少在褪色时).这实际上花了我几个小时来搞清楚. (7认同)

Jas*_*ean 12

$('#foo').fadeOut("slow", function(){
  $('#foo').html(data);
  $('#foo').fadeIn("slow");
}
Run Code Online (Sandbox Code Playgroud)