【发布时间】:2014-02-23 15:20:41
【问题描述】:
当我点击“aa”块时,“aa”和“bb”同时动画。 javascript 是否将 animate() 函数非阻塞地发布到单独的线程中?或者这个函数被多次输入,有数千个使用阻塞型函数调用的回调?我怎样才能让 animate() 在需要时一个一个地处理项目(也许使用计时器可以做到,但我必须总是使用计时器吗?)?
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
function growbits(i,j) {
$(i).animate({ height: "500px" }); // looks working concurrently
$(j).animate({ width: "500px"}); // with this one
};
</script>
</head>
<body>
<p id="bb" style="background: #f00; height: 50px; width: 255px; margin: 10px;">asdasd</p>
<p id="aa" onclick="growbits(aa,bb);" style="background: #f00; height: 50px; width: 255px; margin: 10px;">
gfhjjjgfhgkjfhkjtkjyhtkjyhkhfukhgkudfgk
</p>
</body>
</html>
我在 min.js 文件中找到了以下代码:
self.element.animate(
$.extend(style, top && left ? { top: top, left: left } : {}), {
duration: o.animateDuration,
easing: o.animateEasing,
step: function() {
var data = {
width: parseInt(self.element.css('width'), 10),
height: parseInt(self.element.css('height'), 10),
top: parseInt(self.element.css('top'), 10),
left: parseInt(self.element.css('left'), 10)
};
if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });
// propagating resize, and updating values for each animation step
self._updateCache(data);
self._propagate("resize", event);
}
}
);
【问题讨论】:
-
取决于 javascript 引擎...
-
JavaScript 没有内置的
animate函数。你可以看到它是一个 jQuery 对象的方法。检查 jQuery 源代码。 -
好的,我去看看源码。
-
你有一个额外的
; -
做';'意思是并行执行?
标签: javascript jquery animation jquery-animate