jquery回调函数有不同的语法/ s吗?

时间:2012-08-10 07:19:43

标签: jquery function syntax callback

我习惯使用这种语法:

<script type="text/javascript">
   $(document).ready(function(){
      $("button").click(function(){
           $("p").hide(1000,function(){
               alert("The paragraph is now hidden");
           });
      });
   });
</script>

但是最近我遇到了一个也有效的,

<script type="text/javascript">
    $(document).ready(function(){
        $("a").hover(function(){
            $(this).stop().animate({ color: '#a6d13b'}, "normal");
        }, function() {
            $(this).stop().animate({ color: '#000000'}, "normal"); //original color
        });
    });
</script>

我只是jquery的新手,非常感谢一些帮助。为什么第二种语法有效?即使它在动画功能之外。 ?

1 个答案:

答案 0 :(得分:2)

这两个脚本做了完全不同的事情,但是(只是在这里猜测)我觉得令人困惑的是,在第二个脚本中,.hover()函数将两个回调作为参数,一个用于mouseenter,一个用于mouseleave,如下所示:

$("a").hover(callbackFunctionOne, callbackFunction2);
// OR
$("a").hover(function() { ... }, function() { ... });

在您的示例中,传递给.hover()的这两个函数在.animate()调用发生,但.animate()调用本身没有(在这种情况下)有回调。< / p>

编辑:既然dknaack已经编辑了你的代码以使其正确缩进,那么.animate()调用就在这两个函数中更为明显。当它没有缩进时,很难看出属于什么的东西。

请注意.animate()(以及许多其他jQuery函数)可以进行回调,但这是可选的。