2

removeClass('below')」すると、css クラスが削除されますが、オブジェクトをもう一度クリックすると、同じアクションが実行されます。

css コードを削除して、クリック機能を無効にしようとしています。私は何を間違っていますか?

$('.below').click(function() {
    $(this).removeClass('below');
    $('#welcome').removeClass('fadeInLeft, bounceOutLeft').addClass('fadeOutLeft');
    $('#welcome_search').delay('500').animate({"top": "-=140px"},"slow");
});

私のhtmlは次のようになります。

<div id="welcome_item" class="below">
    stuff
</div>

これを手伝ってください、ありがとう。

クラスを変更した後でクリックを再バインドしたい場合はどうすればよいですか?

$('.below').click(function() {
    $(this).unbind('click').removeClass('below').addClass('above');
    $('#welcome').removeClass('fadeInLeft bounceOutLeft').addClass('fadeOutLeft');
    $('#welcome_search').delay('500').animate({"top": "-=140px"},"slow");
});

$('.above').click(function() {
    $(this).removeClass('above').addClass('below');
    $('#welcome_search').animate({"top": "+=140px"},"slow");
    $('#welcome').removeClass('fadeInLeft bounceOutLeft fadeOutLeft').delay('500').addClass('fadeInLeft');
});
4

4 に答える 4

3

jQueryコードが実行されるまでに、clickイベントはすでに class.belowで要素にバインドされており、要素をクリックするたびに、jQueryは実際には要素のクラスをチェックしなくなるため、クラスを削除しても役に立ちませんこれ。

unbind代わりに使用できます

http://api.jquery.com/unbind/

$('.below').click(function() {
    $(this).unbind('click');
    $('#welcome').removeClass('fadeInLeft, bounceOutLeft').addClass('fadeOutLeft');
    $('#welcome_search').delay('500').animate({"top": "-=140px"},"slow");
});
于 2012-04-25T05:16:48.803 に答える
1

使用する.off()

クラスを削除するだけでは不十分です。イベントはノードに関連付けられているため、関連付けられているイベントも削除する必要があります。

デモ

于 2012-04-25T05:16:13.077 に答える
0

代わりに使用することもできます

$('.below').live("click",function(){});
于 2012-04-25T05:17:03.233 に答える
0

クラスを削除するときに、イベントのバインドを解除するだけです。

$('#foo').unbind('click');

したがって、js コードは次のようになります。

$('.below').click(function() {
    $(this).unbind('click');
    $(this).removeClass('below');
    $('#welcome').removeClass('fadeInLeft, bounceOutLeft').addClass('fadeOutLeft');
    $('#welcome_search').delay('500').animate({"top": "-=140px"},"slow");
});
于 2012-04-25T05:17:05.007 に答える