1

jQuery を使用して 3 つの異なる div の背景色をアニメーション化し、3x3 グリッドを作成するために繰り返しています。ホバー時間が 1 秒を超えると、ホバー アウト/ストップ アニメーションが機能しなくなったように見えることを除いて、すべて問題ありません。

1 秒間ホバーして外に出ると、必要に応じて色が固定されます。ただし、長時間ホバリングすると、ホバーアウト/停止機能が壊れるようです。

複数の機能を同時に制御しようとしたときに、ホバー/ストップ機能がどのように機能するかを説明してくれる人はいますか?

jQuery の動作を示す唯一の方法は JSfiddle を使用することであるため、動作例をここにリンクしました: http://jsfiddle.net/Commandrea/KbLDq/3/

        function pixelColors(){
    var color = '#'+(Math.random()*0xFFFFFF<<0).toString(16);

    $('.logo').animate({
    backgroundColor: color
    }, 1000, pixelColors);

    }

    function pixelColors2(){
    var color = '#'+(Math.random()*0xFFFFFF<<0).toString(16);

    $('.logo2').animate({
    backgroundColor: color
    }, 2000, pixelColors2);

    }

    function pixelColors3(){
    var color = '#'+(Math.random()*0xFFFFFF<<0).toString(16);

    $('.logo3').animate({
    backgroundColor: color
    }, 1500, pixelColors3);

    }


    $('#logo_back').hover(
    pixelColors,
    function() {
    $('.logo').stop()
    }
    );

    $('#logo_back').hover(
    pixelColors2,
    function() {
    $('.logo2').stop()
    }
    );

    $('#logo_back').hover(
    pixelColors3,
    function() {
    $('.logo3').stop()
    }
    );


    .header {
    position: relative;
    margin: 0 auto;
    }


    #home_header {
    position: relative;
    z-index: 7;
    }

    .pixCol {
    float: left;
    height: 288px;
    margin-right: 20px;
    margin-top: 12px;
    min-height: 1px;
    padding-left: 15px;
    width: 227px;
    }



    #pixelBox {
    left: 14px;
    position: relative;
    top: 20px;
    }

    .logo {
    height: 69px;
    width: 69px;
    z-index: 8;
    background-color:#9C3;
    display:inline-block;
    float:left;
    background-color:#F60;
    }


    .logo2 {
    height: 69px;
    width: 69px;
    z-index: 8;
    background-color:#9C3;
    display:inline-block;
    float:left;
    background-color:#F90;
    }

    .logo3 {
    height: 69px;
    width: 69px;
    z-index: 8;
    background-color:#9C3;
    display:inline-block;
    float:left;
    background-color:#F33;
    }

    .logo_back{
    background:none;
    height: 220px;
    margin-top: 51px;
    position: absolute;
    width: 229px;
    z-index: 9;
    }

    .logo_back2 {
    background: url("images/logo/batterEmpty.png") no-repeat scroll 0 0 transparent;
    height: 220px;
    margin-top: 51px;
    position: absolute;
    width: 229px;
    z-index: 9;
    }

    ​


    <div class="header">
    <div class="pixCol">
    <div id="home_header">
    <div id="logo_back" class="logo_back"></div>
    <div id="pixelBox">

    <div class="logo"></div>
    <div class="logo2"></div>
    <div class="logo3"></div>
    <div class="logo3"></div>
    <div class="logo"></div>
    <div class="logo2"></div>
    <div class="logo2"></div>
    <div class="logo3"></div>
    <div class="logo"></div>

    </div>
    </div>
    </div>
    </div>
    ​
4

2 に答える 2

3

3 つではなく 1 つのホバー イベントを使用することができstop(true)、問題が解決することが既にわかっています。

 $('#logo_back').hover(
     function(){
         pixelColors();
         pixelColors2();
         pixelColors3();
     },
    function() {
        $('.logo, .logo2, .logo3').stop(true);
    }
); 

デモ。

于 2012-07-03T20:03:43.633 に答える
2

私はあなたのコードにかなり混乱しています。なぜ同時に 3 つのアニメーションを開始するのですか? [編集: ああ、それらは異なる要素上にあるようです]とにかく、それが停止しない理由です-stop(true)キューに入れられたアニメーションも停止するために呼び出す必要があり、同時に3つのアニメーションを常に起動しているため、たくさんのアニメーションがありますキュー内のアニメーション。true を渡すだけで、フィドルは正常に動作します。

于 2012-07-03T19:55:02.743 に答える