jQuery動畫都是非同步的

antzone發表於2017-04-10

本章節只是來說明一個事實,那句是jQuery動畫都是非同步的。

所以在使用的時候要特別注意,先看一段程式碼例項:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#antzone {
  height: 30px;
  width: 100px;
  background: #ccc;
  text-align:center;
  line-height:30px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
  $("#bt").click(function () {
    $("#antzone").animate({
      "width": "1000px"
    }, 3000)
    $("#antzone").text("螞蟻部落");
  });
})
</script>
</head>
<body>
<div id="antzone"></div>
<input type="button" id="bt" value="檢視效果" />
</body>
</html>

在上面的程式碼中,我們的本意是當動畫執行完畢,再將指定的文字寫入div元素中。

但是我們發現,文字被立馬寫入div元素中,這是因為jquery中的動畫是非同步的。

要想實現我們的設想,可以使用回撥函式,程式碼修改如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#antzone {
  height: 30px;
  width: 100px;
  background: #ccc;
  text-align:center;
  line-height:30px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
  $("#bt").click(function () {
    $("#antzone").animate({
      "width": "1000px"
    }, 3000, function () {
      $("#antzone").text("螞蟻部落");
    })
  });
})
</script>
</head>
<body>
<div id="antzone"></div>
<input type="button" id="bt" value="檢視效果" />
</body>
</html>

相關文章