为什么不淡出淡出jquery?

时间:2017-06-07 01:16:54

标签: jquery

我已经尝试了几个小时

    $('#position-name').html('Successfuly Changed').fadeOut(1000);
    $('#position-name').html('New Name').fadeIn();

我知道这很简单但是,我不知道为什么如果我在我的代码中运行这些行只有新名称,尽管有特定的效果,它仍然会出现。

淡出新名称,然后再次淡化新名称

为什么它没有淡出或显示成功更改

3 个答案:

答案 0 :(得分:2)

问题是:您的代码类似于 - 将元素html更改为'Successfuly Changed' - 然后fadOut()1000直接更改到'New Name' - 你可以看到它fadeOut()然后fadeIn() ..为了避免你需要使用fadeOut()回调函数

$('#position-name').html('Successfuly Changed').fadeOut(1000 ,function(){
  $(this).html('New Name').fadeIn();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="position-name"></div>

答案 1 :(得分:2)

fadeOut和fadeIn都是异步函数。意思是,一旦你调用它们,动作将在后台发生,你的代码会立即返回并继续到下一个语句。

在你的例子中,你开始淡出超过一秒,但是一旦它开始你替换div的内容并淡入。因为淡出只运行了一微秒,jquery在内部取消fadeOut动作并运行fadeIn不需要做任何事情。

这两个功能都采用了第二个参数,即完整的&#39;打回来。您应该按如下方式构建代码。

  $('#position-name').html('Successfuly Changed').fadeOut(1000, 
    function () {
      $('#position-name').html('New Name').fadeIn();
  });

答案 2 :(得分:1)

$( "#clickme" ).click(function() {
var message = $('#position-name');
    
message.html('Successfuly Changed').fadeOut(1000, function() {
  message.html('New Name').fadeIn("slow");
});
    
});
#box {
  width: 200px;
  height: 50px;
  outline: 2px solid;
  line-height: 50px;
  text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

You can add the next animation in the callback funciton of fadeOut.
After 1 second of the fadeout animation the new fadeIn will start.

<div id="box">
  <div id="position-name"></div>
</div>

<button id="clickme">CLICK ME</button>