2009-03-17 9 views
0

'first、second'の順に実行されます。私は最初に実行されると最後に必要です。jQueryイベントチェーン - スタックからキューへ

function first(){ alert('first') } 
function second(){ alert('second') } 
$('input').click(first).click(second); 
+0

ハンドラを逆の順序で追加してみませんか? – tvanfosson

+0

どう思いますか?多分私はそれをすることはできませんか? –

+0

あなたの問題は何ですか?あなたの質問は何ですか、具体的にご記入ください。 –

答えて

3

短い回答:これはできません。

praxisブラウザでは、割り当てられた順序でイベントが実行されますが、常に実行するとは信用できません。キャンセルは、使用しているイベントモデルによって異なります。レベル1(onclick = "...")では、イベントバブルのキャンセルは直ちに有効になり、それ以降のハンドラは実行されません。これは、jQueryが使用するLevel 2(Element.addEventListener)では当てはまりません。要素に登録されたすべてのハンドラは、伝播が停止する前に常に起動されます。

私の意見では、複数のハンドラ関数を順番に実行することに依存するが、割り当てのシーケンスを制御できないものを書く場合は、アプローチを再考する必要があります。

しかし、これを行う必要がある場合、必要な要素をすべて取り除き、必要な要素をすべて取り除いて、目的のシーケンスを取得することができます。あなたは特定の要素のイベントのリストを$.data(someelement, 'events')で取得し、それらのイベントをフロントにプッシュした状態でun /再割り当てすることができます。

関連する問題