<script type="text/javascript">
(document).ready(function() {
$("button").click(function() {
$("div").hide(2000,function() {
alert("Hello JavaScript");
});
});
});
</script>
上面代码的效果是以两秒的效果隐藏div后,再执行回调函数,弹出”Hello JavaScript“,那下面这段代码为什么不行?
<script type="text/javascript">
(document).ready(function() {
$("button").click(function() {
$("div").hide(2000);
alert("Hello JavaScript");
});
});
</script>
JS不是单线程吗? $("div").hide(2000);和 alert("Hello JavaScript");不应是前者执行完了,后者再执行吗?为什么前者的动画效果还没执行完,就执行后面的代码,难道是JS碰到动画之类效果的时候是抛给别的线程执行的,它自身不执行渲染之类的效果,所以它就立即执行后面的代码。
jqueryçhide()æ¹æ³çå®ä¹åç¨æ³ï¼
å¦æ被éçå ç´ å·²è¢«æ¾ç¤ºï¼åéè该å ç´ ã
å®ä¾ï¼
éèå¯è§ç <p> å ç´ ï¼
$(".btn1").click(function(){è¯æ³ï¼
$(selector).hide(speed,callback)是不是jquery的动画实际上是用setTimeout()实现的。
而setTimeout()就相当于抛出个新的线程。
是不是jquery的动画实际上是用setTimeout()实现的。
而setTimeout()就相当于抛出个新的线程。
是不是jquery的动画实际上是用setTimeout()实现的。
而setTimeout()就相当于抛出个新的线程。
js是没有多线程的。 setTimeout只是模拟。 你可以测试一下:
setTimeout(function(){alert(1);},1);
alert(2);
显示时2,1,说明setTimeout是不用等执行完,就可以执行下一句的。