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

在JQuery中回调函数没加小括号,为什么???

在JQuery中回调函数没加小括号,为什么???

快乐崇拜tager 2016-06-29 16:04:39
我在执行animate动画完毕后调用回调函数,要直接写函数名“aniDiv”就能调用这个函数,而不是写成“aniDiv()”来调用为什么?如果我不写在回调函数中而是另起一行去调用函数就必须写括号,为什么了???<html><head><script type="text/javascript" src="/jquery/jquery.js"></script><script type="text/javascript"> $(document).ready(function(){  function aniDiv(){    $("#box").animate({width:300},"slow");    $("#box").animate({width:100},"slow",aniDiv);      //该处调用aniDiv函数,没写小括号,为什么?  }  aniDiv();  $(".btn1").click(function(){    $(":animated").css("background-color","blue");  });});</script><style> div{background:#98bf21;height:40px;width:100px;position:relative;margin-bottom:5px;}</style></head><body><div></div><div id="box"></div><div></div><button class="btn1">Mark animated element</button></body></html>
查看完整描述

3 回答

已采纳
?
Suber丶林

TA贡献75条经验 获得超180个赞

还原animate的写法:

// 其中一个参数为function声明,而不是执行一个function
animate({width: 2}, 'slow', function() {});

// 所以你可以写成
animate({width: 2}, 'slow', function() {aniDiv()});

// 很显然,你已经将要执行的代码封装成一个function,而且不带参数,所以可以使用以下写法
animate({width: 2}, 'slow', aniDiv);


查看完整回答
3 反对 回复 2016-06-29
  • 快乐崇拜tager
    快乐崇拜tager
    animate({width: 2}, 'slow', aniDiv); 如果带参数这个要怎么写了,还能简写吗?
  • Suber丶林
    Suber丶林
    带参数的话,就简写不了了,只能按我上面第二种方法。 执行方法写成aniDiv(param);酱紫带上参数即可。
?
老猿

TA贡献86条经验 获得超82个赞

加括号就是执行

查看完整回答
1 反对 回复 2016-06-30
?
qyy2499760117_叶子

TA贡献188条经验 获得超91个赞

  $("#box").animate({width:100},"slow",aniDiv);      //该处调用aniDiv函数,没写小括号,为什么?

这句是在  function aniDiv()这个函数里,

查看完整回答
反对 回复 2016-06-30
  • 3 回答
  • 0 关注
  • 2866 浏览

添加回答

举报

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