html
1<!DOCTYPE html>
2<html>
3 <head>
4 <title>title</title>
5 <meta charset="UTF-8">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <style type="text/css">
8 html,body {
9 height: 100%;
10 margin: 0;
11 padding: 0;
12 }
13 #wrap {
14 width: 100%;
15 height: 100%;
16 background: #F6F6F6;
17 }
18 #object {
19 position: absolute;
20 }
21 </style>
22 </head>
23 <body>
24 <div id="wrap">
25 <span id="object">●</span>
26 </div>
27
28 <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"></script>
29 <script type="text/javascript">
30 $(function () {
31
32 function doAnimate(obj, css, i) {
33 console.log(i);
34 if (typeof css[i] === 'undefined') {
35 return;
36 }
37 obj.animate(css[i], function () {
38 doAnimate(obj, css, i + 1);
39 });
40 }
41
42 var obj = $('#object');
43 var css = [
44 {
45 top: 100
46 , left: 100
47 }
48 , {
49 top: 0
50 , left: 100
51 }
52 , {
53 top: 100
54 , left: 100
55 }
56 , {
57 top: 0
58 , left: 0
59 }
60 ];
61 doAnimate(obj, css, 0);
62 });
63 </script>
64 </body>
65</html>
html
1<!DOCTYPE html>
2<html>
3 <head>
4 <title>title</title>
5 <meta charset="UTF-8">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <style type="text/css">
8 html,body {
9 height: 100%;
10 margin: 0;
11 padding: 0;
12 }
13 #wrap {
14 width: 100%;
15 height: 100%;
16 background: #F6F6F6;
17 }
18 #object {
19 position: absolute;
20 }
21 </style>
22 </head>
23 <body>
24 <div id="wrap">
25 <span id="object">●</span>
26 <div id="report">
27
28 </div>
29 </div>
30
31 <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"></script>
32 <script type="text/javascript">
33 $(function () {
34 function doAnimate(obj, css, i, endcallback, stepcallback) {
35 if (typeof css[i] === 'undefined') {
36 endcallback(i);
37 return;
38 }
39 obj.animate(css[i], function () {
40 stepcallback(css, i);
41 doAnimate(obj, css, i + 1, endcallback, stepcallback);
42 });
43 }
44
45 var obj = $('#object');
46 var css = [
47 {
48 top: 100
49 , left: 100
50 }
51 , {
52 top: 0
53 , left: 100
54 }
55 , {
56 top: 100
57 , left: 100
58 }
59 , {
60 top: 0
61 , left: 0
62 }
63 ];
64
65 var endcallback = function (i) {
66 alert(i);
67 };
68
69 var stepcallback = function (css, i) {
70 var res = $('<div>');
71 res.text("#" + i + " top:" + css[i].top + " left" + css[i].left);
72 $("#report").append(res);
73 };
74
75 doAnimate(obj, css, 0, endcallback, stepcallback);
76 });
77 </script>
78 </body>
79</html>
引数をこんなに増やすくらいなら、プラグインにしちゃう方がもっとスッキリするでしょうね。