2012-03-23 23 views
10

フォームのsubmitイベントに2つの関数がフックされています。各機能は異なる場所にあり、ある機能は他の機能に影響を与えることができます。jqueryイベントの優先度

どのようにこれらの機能のうちの1つを最低優先度で強制的にフックすることができますか(つまり、最後に実行されますか)。

+3

jQueryの場合、イベントハンドラはバインドされた順に実行されます。だから正しい順序でそれらを束縛し、あなたは大丈夫です。 –

+0

私たちにいくつかのコードを与えてください – Har

+0

OK、問題は私のコードがこのあらかじめ定義された順序ものに縛られることを望まないということです。 – Alex

答えて

7

私は考えることができる4つの方法があります。

  1. は、コールバックを自分で管理し、唯一の所望の順序で関数を呼び出す1つのイベントハンドラを持っています。

  2. 最後に起動するはずの機能では、実際の作業を0ミリ秒のタイムアウトで実行します。他のすべての機能が同期して動作している場合(そしてイベントのバブリング中に最後の機能が実行されていない場合)、同じことが達成されます。

  3. DOMツリー内で上位にあるファイアした最後のハンドラをバインドします。それがsubmitイベントで動作するかどうかをテストする必要があります。これらのイベントのバブリングはIEでは機能しませんが、jQuery docsはこれがjQueryで正規化されていると言います。試してみる価値があるかもしれません。

  4. 低優先度以外のハンドラをバインドする場合は、後者をバインド解除し、新しいバインドをバインドして、最後に実行するバインドを再バインドします。

2

あなたはハンドラ用のカスタムイベントを使用すると、最初のハンドラは、それを防ぐためのものを行う、第二ハンドラのイベントを発生し、第二を持って提出取り込む可能性があり