0

問題があります。少しの間、要素を指定するためのクラスを追加する必要があります。このクラスがライブになっているときに、ある条件を実行したいのですが、そうでない場合は別の条件を実行します。何かがおかしいのですが、助けてもらえますか? これは私のコードです:

btn.live('click', function(e){
    info_board.addClass('animation_time');
    setTimeout(function(){
        info_board.removeClass('animation_time')
    }, 700);
    if (info_board.not('animation_time')){
        info_board.addClass('flying_info_board_out').removeClass('flying_info_board');
    }
    else if (info_board.hasClass('animation_time')){
        setTimeout(function(){
            info_board.addClass('flying_info_board_out').removeClass('flying_info_board');
        }, 500);
    }
});
4

2 に答える 2

1

を使用.not()する場合でも、.セレクターを使用してクラスをターゲットにする必要があります。だから使用:

if (info_board.not('.animation_time').length > 0){

.length.not()0 個以上の項目を持つ jQuery オブジェクトである、一致した要素のセットを返すため、必要です。しかし、jQuery オブジェクトはifステートメント内で常に真です。.not()したがって、チェックする正しいことが必要です。これは、.lengthプロパティで一致した要素がいくつ返されたかをチェックすることです。

同時に、else if...単に使用する理由はありませんelse

.hasClass()はおそらく よりも jQuery の処理が少ないため、.not()次を使用することもできます。

if (!info_board.hasClass("animation_time")) {
    // Your code from the if block
} else {
    // Your code from the else if block
}
于 2013-01-23T14:38:47.593 に答える
0

hasClassを使用することもできます。

if (! info_board.hasClass('animation_time')){

animation_timeこれの利点は、文字列連結を使用してクラス名を構築することなく、変数に格納できることです。

btn.live('click', function(e){
    var animClass = 'animation_time';
    info_board.addClass(animClass );
    setTimeout(function(){
        info_board.removeClass(animClass)
    }, 700);
    if (!info_board.hasClass(animClass)){
        info_board.addClass('flying_info_board_out').removeClass('flying_info_board');
    }
    else {
        setTimeout(function(){
            info_board.addClass('flying_info_board_out').removeClass('flying_info_board');
        }, 500);
    }
});
于 2013-01-23T14:39:31.957 に答える