0

以前の JQuery イベントによって追加されたクラスを削除しようとしていますが、うまくいきません。ガイドしてください!

これはクラスを適用するものです:

$('.project').click(function() {
        var imageTotal = $(this).find('.gallery img').length;
        if (imageTotal === 1) {
            $('.next-image', this).hide();
            $('.prev-image', this).hide();
        } else {
            $('.next-image', this).show();
            $('.prev-image', this).show();
        }
        $('img.feature').hide();
        $('.gallery img:nth-of-type(' + imageCounter + ')', this).addClass('current');
        $(this).addClass('active');
    });

そして、これは私がそれを削除しようとしているものです:

$('.back').click(function() {
        $('.gallery').hide();
        $('.back').hide();
        $('img.feature').show();
        $(this).parent('.project').find('div').removeClass('active');
        $('.prev-page').show();
    });

これは HTML 構造です。

<div class="project">
                <img class="feature" src="content/dream1.jpg"/>
                <div class="description">
                    <h3>Exhibition Roadshow</h3>
                    <h4>The Royal Borough of Kensington and Chelsea 2012</h4>
                </div>
                <div class="gallery">
                    <img src="content/dream2.jpg"/>
                    <img src="content/dream3.jpg"/>
                    <img src="content/dream4.jpg"/>
                    <img src="content/dream5.jpg"/>
                    <div class="next-image">&rarr;</div>
                    <div class="prev-image">&larr;</div>
                </div>
                <div class="back">S</div>
            </div>

ここで実際の例を見ることができます。

4

3 に答える 3

1

間違った要素からクラスを削除しています。この行:

$(this).parent('.project').find('div').removeClass('active');

次のようにする必要があります。

$(this).closest('.project').removeClass('active');

.project は、アクティブなクラスを削除する要素であるためです。上記で行っているのは、.project 要素内で「div」を検索することです。

于 2013-05-26T12:48:26.277 に答える
0

最初の問題は $(this).parent('.project') でした。find('div') .removeClass('active');

しかし、実際の問題は、クラスは削除されますが、キャッチイベントを終了できないため.project、同じクラスを再度設定するクリックイベントにバブルダウンします。すべてが同時に発生するため、クラスが削除されることはないようです。

ソリューション?return false;クリックイベントの最後に追加

于 2013-05-26T12:46:34.553 に答える