猿问

jquery的hide()方法的动画效果问题?

<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碰到动画之类效果的时候是抛给别的线程执行的,它自身不执行渲染之类的效果,所以它就立即执行后面的代码。

慕斯王
浏览 496回答 4
4回答

Smart猫小萌

jquery的hide()方法的定义和用法:如果被选的元素已被显示,则隐藏该元素。实例:隐藏可见的 <p> 元素:&nbsp;$(".btn1").click(function(){&nbsp; $("p").hide();});语法:1 $(selector).hide(speed,callback)&nbsp;

郎朗坤

不是$("div").hide(2000); 先执行完再执行下面的。如果效果都连在同一个jquery语句中,是可先执行完一动作,再另一动作。如$("div").hide(2000).show(2000).(其它的事件等操作);这样,后面的动作会依次执行。前面执行完后再后面的。

临摹微笑

$("div").hide(2000);alert("Hello JavaScript");JS引擎确实是单线程,settimeout也只是模拟出一个假象。就上两行代码是不同步的这和单线程没关系。
随时随地看视频慕课网APP

相关分类

JQuery
我要回答