1

私はjavascript/jQueryが初めてで、これには本当に困惑しています。

ここで達成しようとしているのは

  • a#sameDayTab を切り替えると、jquery は .changeAlert と fadeOut を探します。これはコンテナー div であり、再度切り替えると div がフェードインします (これはうまく機能します)。
  • 各トグルは、ページに存在する .changeAlert の数を通知する関数も呼び出し、スパン内の数を適切に更新します。問題は、トグルされたアンカーを最初にクリックしたときに、.changeAlert が fadeOut によって非表示になっているため、表示される数は 0 である必要があることです。代わりに、ページの読み込み時に存在するクラスの数を返します。この値は、トグルが何回アクティブ化されても変化しません。 .

どんな助けでも大歓迎です。

function totalNumFares ()
    {
    var n = $('.changeAlert:visible').size();               
    $('.numFares').replaceWith('<span class=\"numFares\">'+ n +'</span>');

    }

totalNumFares();    

//Toggle On/off Same Day Connections

$('a#sameDayTab').toggle(function() {

    $('.changeAlert').parent().parent().parent().parent().parent().fadeOut();
    totalNumFares();        


    },function(){
    $('.changeAlert').parent().parent().parent().parent().parent().fadeIn();
    totalNumFares();


});
4

2 に答える 2

0

コールバックとして設定する必要があります。

$(function(){
    // You can set duration to whatever you like
    $("#item").fadeOut(duration, function(){
        totalNumFares();
    });
});

http://api.jquery.com/fadeOut/

于 2010-05-12T21:01:26.627 に答える
0

.fadeOut()次のように、コールバックとして実行する必要があります。

$('.changeAlert').parent().parent().parent().parent().parent().fadeOut(totalNumFares);

現在、フェードを開始した直後に実行されますが、フェードが終了:visibleするまで実行されるため、必要な数をカウントするには、コールバックの実行時である終了後に更新する必要があります。.fadeOut()

また、セレクターとして使用できる親にクラスがある場合は、その.parent()チェーンを1回の 呼び出しに置き換えることができます。.closest(selector)

于 2010-05-12T21:01:49.547 に答える