私はJavascriptが初めてで、次のコードを分析しています。私の質問は次のとおりです。 setTimeout() 関数の場合、どのように呼び出されますか? 変数 this.timer に割り当てられているだけで、まだ呼び出されていないように見えます。それでも関数は実行されます。私は何が欠けている/理解していないのですか? 事前に助けてくれてありがとう!
$(document).ready(function () {
var validateUsername = $('#validateUsername');
$('#username').keyup(function () {
var t = this;
if (this.value != this.lastValue) {
if (this.timer) clearTimeout(this.timer);
validateUsername.removeClass('error').html('<img src="images/ajax-loader.gif" height="16" width="16" /> checking availability...');
this.timer = setTimeout(function () {
$.ajax({
url: 'ajax-validation.php',
data: 'action=check_username&username=' + t.value,
dataType: 'json',
type: 'post',
success: function (j) {
validateUsername.html(j.msg);
}
});
}, 200);
this.lastValue = this.value;
}
});
});