0

私はこのコードを持っています:

$('#name').blur(function(){
  $('#usernameLoading').show();
  $.post("check", {
    name: $('#name').val(),
    platform: $('#platform').val()
  }, function(response){
    $('#usernameResult').fadeOut();
    setTimeout("finishAjax('usernameResult', '"+escape(response)+"')", 400);
  });
  return false;
});

#name代わりに、ぼかしではなく、単に存在する場合に変更したいと思います。試してみ.is('*')ましたが、実際のイベント ハンドルではないと想定しているため、構文エラーが発生しました。

これを達成する簡単な方法は何ですか?

4

2 に答える 2

1

あなた<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();
}

もちろん、明らかにもっと違いがありますが、これは何かを教えてくれるはずです。

于 2013-06-29T23:42:37.680 に答える