2012-01-16 10 views
2

AJAXリクエストを作成し、$(document).ready()によって設定されたすべての関数を呼び出す場合。どうしたらいいですか?jQuery document.ready関数を手で呼び出す

function startup() { 

    // All your functions in here. 

} 

$(document).ready(startup); 

そして、あなたのAJAXリクエストが終了した後:

startup(); 
+0

正解をマークすることを検討してください。 – Jeffrey

答えて

3

最も簡単な方法は、共有機能を使用することです:

$(document).ready(function() { 
    setup(); 
}); 

$.post('/', {}, function() { 
    setup(); 
}, 'json'); 

をしかし、あなたは再割り当てのリスナーにそれを使用している場合、あなたはおそらく、彼らがしている前にそれらをを割り当てると逃げることができるだろうこのように、作成した:

$(document).ready(function() { 
    $(document).delegate('.my-button', 'click', function() { }); 
}); 

このコードを使用して、すべての.my-buttonクリックが関係なく、ボタンがDOMReady時に、あなたのDOMに存在していたかどうかの、カスタム関数によって処理されます。

ことに注意してください:あなたはjQueryの1.7以降を使用している場合

  • $(document).ready(function() { ... });$(function() { ... });
  • に最小化することができるが.on.delegate上好む:$(document).on('click', .my-button', function() { });
  • をすなわち$('#close-parent').delegate$(document).delegate上で、より広範なオーバー狭い文脈を好みます
6
$(document).ready(); 

ありがとうございましたこれは悪い練習IMHOとなるでしょう)、setupと呼ばれる関数を作成して、すべてのリスナーなどを設定し、再適用する必要があるときにこの関数を呼び出します。

+0

私はそれをあなたが書いていると思います。私はこの組み合わせが好きです...担当者の私の分担をどのように送っているかを理解する必要があります; – musefan

+6

'ready'に' startup'への参照を渡す必要があります。現在、 'startup'の戻り値を渡しています。 –

0

の代わりに手でdocument.readyをトリガー(問題が解決しない場合は、これを試して、あなたに

+0

ありがとうございます。しかし、そこにいくつかのjsファイルがあり、$()への呼び出しがいくつかあるので、それらを起動関数に分けるのに時間がかかります... – idm

+0

私の心には、各関数を実行する必要がある関数を追加する「関数を配列する」関数を呼び出すと、この配列を繰り返し処理して各関数を実行するだけで、それはうまくいくでしょうか? –

関連する問題