0

アニメーションに奇妙な (もう一度) 問題があります。

一言で言えば、私は写真を持っています。それをクリックすると、2 つの div が表示され、それらの div を削除するための閉じるボタンがあります。しかし、そのボタンをクリックすると、消える div は 1 つだけです。

2 つの新しい div にはデバッグ クラスがあり、通常はボタンをクリックすると削除されます

$('#gallery').on('click', 'li', function(e) {

        // To display the animations with position
        var $this = $(this),
            dataItem = $this.data('item');

        // Left animation
        if ( dataItem == 1 ) {
            console.log( $this );

            $this
                .addClass('active')
                .find('.info-texte')
                    .removeClass('hidden')
                    .addClass('debug');

            // When animation is ended add the second part
            $this.find('.debug').on('animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd', function() {
                $this.find('.info-btn')
                    .removeClass('hidden')
                    .addClass('debug');
            });
        }

        // Supprime le href event
        e.preventDefault();
    });

    $('.btn-close').on('click', function() {
        var $this = $(this);

        $this
            .parents()
            .eq(3)
                .removeClass('active')
                .find('.info-texte, .info-btn')
                    .removeClass('debug')
                    .addClass('hidden');
    });

ここで動作を確認できます: http://www.jeremybarbet.com/effect/bug.html

4

2 に答える 2

1

私のコメントによると、あなた $this.parents().eq(3)は間違った要素をターゲットにしています

これを次のように変更すると$this.parents('li.active')

両方の div が消えるはずです:

http://jsfiddle.net/TDsCT/

編集

詳細な検査の後、それはあなたのクリックによるものです:

$('#gallery').on('click', 'li'

これは、ボタンが 内にあるため、ボタンをクリックしたときにも発生します#gallery li。コードを変更したので、代わりに画像をクリックして開き、ボタンをクリックして閉じます。

http://jsfiddle.net/TDsCT/5/

于 2013-05-09T14:36:52.057 に答える
0

式 $this.parents().eq(3) は、希望する結果 (左側の 2 つの div) に評価されていないようです。おそらく、別の DOM トラバーサル メソッドのセットを試してみませんか? (例: $this.parents().eq(2).prev() と $this.parents().eq(2) ですが、これはちょっと面倒です)

于 2013-05-09T14:04:29.480 に答える