2011-07-02 5 views
6

文書要素にjQuery ready()関数を使用したいと思います。ここに私のスクリプトは、次のとおりです。jQueryのready()関数を同じ要素に対して2回使用できますか?

1ページ目:

$(document).ready(function(){ 
      $('form#haberekle').ajaxForm(options); 
}); 

2ページ目:

$(document).ready(function() { 
    var options = { 
     success:showResponse, 
     beforeSubmit:showRequest, 
     resetForm:true 
    }; 
    $('#haberresmiekleform').ajaxForm(options); 
}); 

これらの2つのページは<!--#include file=""-->

と同じメインページに含まれていることができますこれら2つの機能は正常に動作するか、または互いにブロックされますか? 私の経験によれば、彼らは正常に動作するようです。

たとえば、onclickボタンの機能は1つだけです。

答えて

10

あなたは好きなだけ.ready()コールを持つことができます.jQueryはこれを念頭に置いて設計されており、絶対に問題ありません。

はそうです、それはOKで、あなたは何の問題もありません...これはすべての時間に発生します。

.click()のようにイベントハンドラと考えると、これはまさにその動作です(正確には、ではなく、正確にはですが、このようなほとんどの目的のためです)。だからあなたはあなたが望むほど多くを持つことができます。興味があるかもしれ

もう一つのノートでは、ハンドラは、あなたは彼らがあなたがページでそれらを呼ばれる順序で実行します意味し、readyList.done()経由.ready()are pushedに渡します。以前のバージョンのjQueryでは、同じ順序の振る舞いが(配列を介しても、別の方法でも)trueです。

2

はい、問題ありません。 domが完全にロードされると、両方が呼び出されます。の後に.ready()を呼び出すと、domが既にロードされているので、コールバックはすぐに実行されます。 http://api.jquery.com/ready/

1

問題ありませんが、同じイベントに対して複数のハンドラを取り付けます。 readyのドキュメントは言う:

$(文書).bind( "準備"、ハンドラが)もあります。 これは準備完了 メソッドと同様に動作しますが、1つ例外があります。 準備完了イベントが既に発生していて、 .bind( "ready")しようとすると、バインドされた ハンドラは実行されません。

そしてbindのドキュメントは言う:

イベントが要素に到達すると、 要素のためにそのイベント型にバインドされているすべての ハンドラが起動されます。登録 複数のハンドラがある場合、それら は常に彼らは

+0

実は '.ready()' .bind() ''のショートカットではない、あなたが見ることができますバインドされた で順番に実行されますソース:https://github.com/jquery/jquery/blob/master/src/core.js#L255これは同様の方法で動作します。 –

+0

正しい。私は私の答えを修正しました。ありがとう。 –

関連する問題