私は長い間 Javascript を使用していませんでしたが、今日は気分を一新しました。いつも私を惹きつけたのはthis
キーワードでした。クリックイベントなどのjQueryイベントハンドラーでは、イベントを発生this
させた要素を参照していることを知っています。this
関数に引数がない場合でも、コールバックとして渡す関数にどのように渡されますか?
次のコードがあるとします。
$("tr.SummaryTbRow").data("Animating", false);
$("tr.SummaryTbAltRow").data("Animating", false);
$("tr.SummaryTbRow").click(function () {
if ($(this).data("Animating") == false) {
if ($(this).next(".Graph").css("display") == "none") {
$(this).data("Animating", true);
//Part I am questioning.
setTimeout(function () {
$(this).data("Animating", false);
}(this), 550);
$(this).next(".Graph").slideRow('down', 500);
}
else {
$(this).data("Animating", true);
$(this).next(".Graph").slideRow('up', 500);
}
}
});
SummaryTbRow
クラスを持つ要素テーブル行を setTimeout コールバック関数に渡す方法を理解しようとしています。jQuerythis
は、匿名のコールバック関数で行っていることと同様の方法で渡しますか? this
関数内でthis
渡された I を参照していますか?
私はただできることを知っています:
setTimeout(function (element) {
$(element).data("Animating", false);
}(this), 550);
this
しかし、関数が引数を 0 とる場合でも、jQuery がコールバック関数にどのように渡すことができるかを理解したいと思います。