0

アニメーションを実行するだけの開閉機能に問題があります。

ここで私のフィドルを参照してくださいhttp://jsfiddle.net/motocomdigital/X34XJ/7/

スライダーアニメーション内でこの関数を実行しているため、再生されています。bx-slider の使用。


この問題は、2 回目のスライダーの回転まで発生しません。これは、バグを表示するためにフィドルで行う必要があることです。

  1. フィドルを開き、
  2. [パネルを開く] をクリックします。
  3. パネルを閉じ、
  4. 次のスライドに移動
  5. 上記と同じ手順を繰り返します (ただし、スライドの 1 つで、パネルを開いたままにして次の面に移動します)。
  6. スライド 1 に戻ると、パネルを開こうとすると、開いてすぐに閉じます。
  7. これらの手順をもう一度繰り返すと、パネルが開き始め、閉じてから再び開くことに気付くでしょう... ああ、変です!!!!

これは私のコードです(ただし、フィドルを表示する方が良いでしょう)

$('#slider1').bxSlider({

    auto: false,
    speed: 800,

    // runs after new slide has loaded
    onAfterSlide: function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) {

        var $fadeItems = $('a.openPanel, .panel, span'), // items that fade in
            $panel = $(currentSlideHtmlObject).find('.panel'); // current slide panel

        $fadeItems.removeAttr('style'); // this removes the inline style on all fadeItems, allowing css display: none; to take affect

        $(currentSlideHtmlObject).find($fadeItems).fadeIn(); // current slide fadeIn items fade in

        panelOpen = false; // panel state closed

        panelAction = function() { // panel slide function

            if (panelOpen === true) {

                panelOpen = false;

                $panel.animate({

                    left: '-300px'

                });

            } else {

                panelOpen = true;

                $panel.animate({

                    left: '0px'

                });

            }

        };


        // panel slide open/close button
        $(currentSlideHtmlObject).find('a.openPanel').on('click', function(e) {

            e.preventDefault();
            panelAction();

        });

    }

});
​

ここに画像の説明を入力


私が間違っているところを誰かが理解するのを手伝ってくれたら、とても感謝しています。

前もって感謝します。

4

1 に答える 1

3

bxslider onAfterSlide コールバックでクリック イベントをバインドしているため、off を使用してバインドを解除するだけです

$(currentSlideHtmlObject).find('a.openPanel').off('click').on('click', function(e) {

            e.preventDefault();
            panelAction();

        });

しかし、あなたのコードはクロムで私にとってバグでいっぱいです。

bxslider onAfterSlide コールバック関数でイベントをバインドしないでください。

http://jsfiddle.net/X34XJ/8/を参照してください

于 2012-11-03T18:26:16.177 に答える