-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を初めて使用するので、助けていただければ幸いです。2番目の構文が機能するのはなぜですか?アニメーション機能の外側ですが。?

4

1 に答える 1

2

2 つのスクリプトはまったく異なることを行っていますが、(ここで推測するだけです) 混乱を招くのは、2 番目のスクリプトでは、.hover()関数が次のように、mouseenter 用と mouseleave 用の2 つのコールバックをパラメーターとして受け取ることだと思います。

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

.hover()あなたの例では、.animate()呼び出しが発生するのは渡されたこれら2つの関数内ですが、.animate()呼び出し自体には(この場合)コールバックはありません。

編集: dknaack がコードを適切にインデントするように編集したので、.animate()呼び出しが 2 つの関数内にあることがより明確になりました。インデントされていないときは、何が何に属しているかを確認するのがはるかに困難でした。

.animate()(および他の多くの jQuery 関数)はコールバックを受け取ることができますが、これはオプションであることに注意してください。

于 2012-08-10T07:25:43.923 に答える