私は長い間 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 がコールバック関数にどのように渡すことができるかを理解したいと思います。