これは私のコードで何が起こっているのかというともっと疑問です。それは動作しますが、私は少し悟りが必要です...JavaScript、jQuery、 'this':ここで何が起こっていますか?
私はjQueryを使ってテキスト入力要素にイベントリスナーを作成しています。次のようにHTMLは、単純に次のようになります。
<input type="text" id="autocomplete" size="50" />
私はいつでも誰かの種類そのフィールドに何かをするイベントを受け取るために、私は私のイベントとなるようタイマーでイベントリスナーを設定したイベントが殺到されるのを避ける必要がありますユーザーが125ミリ秒間何も入力されていない場合は、リスナーのコードが実行のみ:
jQuery('#autocomplete').keyup(function(e) {
e.preventDefault();
clearTimeout(this.timer);
this.timer = setTimeout(function() {
jQuery.getJSON([URL goes here], function(data) {
// processing of returned data goes here.
}
}, 125);
console.log(this);
});
これは動作しますが、私はここで起こってすべてを理解すれば、かなりよく分かりません。上記のコードからわかるように、最後のイベントで作成されたタイマーのID
を追跡する必要があります。私はそれをthis.timer
に保存することで行います。ただし、この場合のthis
キーワードはinput要素を参照します。これは何console.log
出力です:
<input type="text" id="autocomplete" size="50" />
は、それが入力要素にタイマーID
を保存するためにOKですか?私が知っているすべてのために、私は何か愚かなことをしている可能性があります。これは「ベストプラクティス」ですか、それとも非常に異なるものでしょうか?
あなたの答えをありがとう! – sbrattla