为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

jeck猫 2019-06-06 18:06:32
<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碰到动画之类效果的时候是抛给别的线程执行的,它自身不执行渲染之类的效果,所以它就立即执行后面的代码。
查看完整描述

4 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

jquery的hide()方法的定义和用法:

如果被选的元素已被显示,则隐藏该元素。

实例:

隐藏可见的 <p> 元素:

1

2

3

$(".btn1").click(function(){

  $("p").hide();

});

语法:

1

$(selector).hide(speed,callback)


 

 


查看完整回答
反对 回复 2019-06-08
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

看错了. 你说的是对的JavaScript 语句(指令)是逐一执行的 - 按照次序的。
但方法的执行和效果的显示是可能出现不同步的。
出现你这个问题,是因为方法执行了,但效果还没有完成,就执行了alert方法。

这也是为什么hide,要定义callback方法的意义。

查看完整回答
反对 回复 2019-06-08
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-06-08
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

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

查看完整回答
反对 回复 2019-06-08
  • 4 回答
  • 0 关注
  • 760 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信