0

私の質問は簡単かもしれませんが、インターネットで答えが見つからないので、ここで質問しています:

私は次のコードを持っています:

function TriggerHeader() {
//doing great stuff
}
function TriggerSlider() {
//doing other stuff
}

すべての条件を調べた後、適切なトリガーを呼び出す関数があります。

function Action() {
    $(".content").fadeOut("fast",function () {
    TriggerSlider() {
        TriggerHeader();
    };
});
}

したがって、TriggerSlider()は、( "。content")。fadeOutが終了したときに呼び出されます(私が望むように)が、TriggerHeader()を呼び出す正しい方法を探しています。TriggerSlider()が終了したとき。書き方は間違っていますが、理由はわかりません。誰かが私を教えてもらえますか?

4

4 に答える 4

1

これらの行は構文的に正しくありません。

TriggerSlider() {
    TriggerHeader();
};

TriggerSliderコールバックが終了したら、コールバックを許可するように関数を調整する必要があります。

function TriggerSlider(callback) {
    // do stuff
    // ... 
    // now invoke the callback: 
    callback();
    // or pass it to a jQuery function
}

これで、次のようにチェーンを設定できます。

function Action() {
    $(".content").fadeOut("fast",function () {
        TriggerSlider(TriggerHeader);
    });
}
于 2012-10-02T10:13:25.577 に答える
1

TriggerSliderとの内容によりTriggerHeaderます。

それらが同期している場合:

TriggerSlider();
TriggerHeader();

TriggerSliderコールバックが利用可能な単一のアニメーションがある場合:

function TriggerSlider(callb) {
   //Most of your code here
   $("element").slideUp(callb);
}
TriggerSlider(TriggerHeader);

PromiseAPIの使用

function TriggerSlider() {
   //Most of your code here
   return $("element").slideUp();
}
$.when(TriggerSlider()).done(TriggerHeader);
于 2012-10-02T10:13:59.573 に答える
0

TriggerSlider()それは本当にどのようにそしてTriggerHeader()実装されるかに依存します。タイムアウトと「個別のスレッド」を含むことを何もしない場合、次々に呼び出す方法は次のようになります。

TriggerSlider();
TriggerHeader();

;-)

一方、TriggerSlider()アニメーションやその他の非同期のものが含まれている場合は、関数のパラメーターとして完了コールバックを実装する必要があります。

function TriggerSlider(completionCallback) {
  setTimeout(500, function() {
    // do something
    // and finally
    completionCallback();
  }
}

これで、TriggerSliderを呼び出して、完了時に呼び出す関数を渡すことができます。

TriggerSlider(TriggerHeader);

関数を呼び出して結果を返すTriggerHeader()ため、を渡さないことに注意してください。関数を関数として渡すと、で関数呼び出しが発生します。TriggerSlider

于 2012-10-02T10:13:12.097 に答える
0

あなたが持っている問題は、あなたがそれをあなたがしたように書いているときにあなたがTriggersliderがすることを再定義しようとしているということですTriggerSlider() { //code }。これは構文的に正しくありません。

スライダーの後にヘッダー機能を実行したい場合、これは機能するはずです。

function TriggerHeader() {
  //doing great stuff
}

function TriggerSlider() {
  //doing other stuff
  TriggerHeader();
}
function Action() {
   $(".content").fadeOut("fast",function () { TriggerSlider();});
}

コールバックを使用してこの問題に取り組む他の方法があります。ただし、これが機能するために常に同じ関数をトリガーしたい場合。

于 2012-10-02T10:17:43.187 に答える