7

要素がクリックされたときに body 要素にクラスを追加したいのですが、少し遅れます。そのため、element1 がクリックされ、0.5 秒後に body に新しいクラスが与えられます。

私はある程度機能するこれを使用していました...

$('.element1').click(function() {
    $('body').delay(500).queue(function(){
        $(this).addClass('left-bg')
    });
});

ただし、この left-bg クラスを本体から削除する別のクリック イベントがあります。

$('.another-element').click(function() {
    $('body').removeClass('left-bg');
});

しかし、次に .element1 をクリックすると、 left-bg クラスが body にまったく適用されません。

それが理にかなっていることを願っています。誰かがこれについて私を助けたり、別の方法を提案したりできますか?

4

6 に答える 6

10

キューをクリアします。

デモ

$('.element1').click(function() {
    $('body').delay(500).queue(function(){
        $(this).addClass('left-bg').clearQueue();
    });
});

$('.another-element').click(function() {
    $('body').removeClass('left-bg');
});
于 2013-07-26T10:07:58.490 に答える
0

設定後に本体をstop()する必要があります。

$('#add').click(function() {
    $('body').delay(500).queue(function(){
        $(this).addClass('left-bg')
    }).stop();
});

$('#rem').click(function() {
    $('body').removeClass('left-bg');
});

フィドルのデモ

于 2013-07-26T10:17:40.693 に答える
0

これを使って -

var bgch;
$('.element1').click(function() {
    bgch = setTimeout((function(){$('body').addClass('left-bg');}),500);
});
$('.another-element').click(function() {
    $('body').removeClass('left-bg');
    clearTimeout(bgch);
});
于 2013-07-26T10:12:21.700 に答える
0

.stop() を使用する必要があります

$('.element1').click(function() {
    $('body').stop().delay(500).queue(function(){
        $(this).addClass('left-bg')
    });
});

デモ

于 2013-07-26T10:09:15.043 に答える