Вы все еще должны помещать этот код в какую-то функцию обработки событий, если ваш <script type='text/javascript'>
не находится внизу вашего <body>
. Попробуйте что-то вроде:
if($('#name')){
$('#usernameLoading').show();
$.post('check', {name: $('#name').val(), platform: $('#platform').val()}, function(response){
$('#usernameResult').fadeOut();
setTimeout(function(){
//need your usernameResult and response to be dealt with here
}, 400);
});
return false;
}
Вы должны заметить, что я изменил вашу запущенную функцию, что вы прошли в setTimeout()
. Вы не можете отправить исполняемую функцию в такой параметр, если только вы не хотите, чтобы она выполнялась на месте. Можно, однако, создать свой метод finishAjax
затем передать его без параметров, как:
setTimeout(finishAjax, 400);
К сожалению, setTimeout()
не аргумент, который вы могли бы передать функции аргумент. Чтобы понять, о чем я говорю об обзоре следующее:
function lameFunc(func, funcArg){
return func(funcArg);
}
function lameQuote(q){
return q;
}
var whatever = lameFunc(lameQuote, 'var whatever is now this String');
Это был пример функции, которая передает аргумент в другую функцию. Вы могли бы обмениваться lameQuote
с анонимной функцией и по-прежнему передать его аргументы, как:
var someVar = lameFunc(function(arg){return arg;}, 'This String Will Go In arg and, therfore, someVar');
Вот как setTimeout()
работает внутри, за исключением того, что он не принимает еще один аргумент, который может быть передан в вашу функцию, так это больше похоже :
function lameFunc(func){
return func();
}
Конечно, есть, очевидно, больше различий, но это должно научить вас чему-то.
Итак, на создание элемента вправо? –
Также возможно дублирование этого; http://stackoverflow.com/questions/8560819/fire-an-event-using-jquery-on-when-element-created –
вы говорите 'if ($ ('# name'))'? – Ohgodwhy