0

今朝はで少しトラブルに見舞われたようですremoveClass。最初にaをクリックしdivてクラスを追加します'containerhover'。次に、閉じるボタンをクリックしても、に追加したばかりのクラスは削除されませんdiv

これが、DOMにのみ追加され、実際にHTMLにコード化されていないことに関係があるかどうかはわかりません。誰か助けてください。

HTML

<div class="container"></div>

jQuery

$(function() {

    $('.container').click(function(e) {
        var mythis = $(this);
        mythis.addClass("containerhover");
        mythis.find('.backface').addClass("bfhover");
        mythis.find('.album').addClass("ahover");
    });

    $('.closealbum').click(function(e) {
        $('.container').removeClass('containerhover');
    });
});
4

1 に答える 1

7

を使用.on()してイベントをコンテナーに添付し、要素がクリックされた場合にのみアクティブにします。.closealbumまた、event.stopPropagation()イベントがさらにバブリングしないようにするメソッドを追加します。

$('.container').on('click', '.closealbum', function(e) {
    $('.container').removeClass('containerhover');
    e.stopPropagation();
});
  1. あなたの問題は、イベント.closealbumをバインドするときに要素が存在しないという事実によって引き起こされます。click
  2. あなたの要素は他の要素の中に配置されています。がないe.stopPropagation()と、イベントがバブルアップし、最初のイベントもトリガーされ、2 番目のイベントの removeClass が取り消されます。

デモ: http://jsfiddle.net/knCR8/1/

于 2012-01-14T15:02:35.077 に答える