-3

我习惯使用这种语法:

<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 的新手,非常感谢一些帮助。为什么第二种语法有效?即使它在动画功能之外。?

4

1 回答 1

2

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

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

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

编辑:现在 dknaack 已经编辑了您的代码以正确缩进它,更明显的是.animate()调用在两个函数内部。当它没有缩进时,更难看出什么属于什么。

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

于 2012-08-10T07:25:43.923 回答