私はjQueryを学び、コールバックの仕組みを理解しようとしています。私はそれが何をしているのか知っている(最初のもので終わった後にいくつかの関数を呼び出す)が、それは私をちょっと捨てる構文です。jQueryコールバック構文
showMenuElement(0); // call to initiate the menu
function showMenuElement(x) {
x += 1; // cycling through elements
if (x < 4) {
var el = "#menu-" + x;
$(el).fadeIn(1000, showMenuElement(x)); // show one element, then show next in line
}
}
...そしてそれは一度にすべてのメニュー項目を示して、私は、それがしたいようにそれは動作しません:私はこのコードを持っています!
showMenuElement(0); // call to initiate the menu
function showMenuElement(x) {
x += 1; // cycling through elements
if (x < 4) {
var el = "#menu-" + x;
$(el).fadeIn(1000, function() { showMenuElement(x) }); // show one element, then show next in line
}
}
それは(fiddle 2あたりのように)別の後に一つの項目を示し、魔法のように動作します:
私はこのように、function() {...}
部分を追加した場合、しかし: (fiddle 1ここで作業フィドルです)。
なぜこのように動作するのか説明を探していますか? 私は、コールバックなので実装する関数の名前を探しますが、function() {...}
の記述は明白に何を変更するのですか?
まあ、私はそれを呼び出すアイデアだったが、アニメーションが終了した後に呼び出し自体が実行されることになる。明らかに私はそれが間違っていた:) – senemedar
コールバック関数のパラメータを扱う場合は、関数(){showMenuElement(x)}を持つあなたは良い解決策です。 :) –
@ChristopheCoquelet:あなたは良い方法ですが、最初の方法がうまくいかない理由を技術的に説明することで、少しだけあなたの答えを改善することができます。 – Techniv