2017-06-08 8 views
1

私はRemodalモーダルウィンドウで処理するJavascriptのlibを使用しています。ポイントは、ライブラリにカスタムイベント用のハンドラがあることです。次のjavascriptJavaScriptのエクステンデッドライブラリからのイベントの優先処理

$(document).on('opening', '.remodal', function (e) { 
    console.log('opening'); 
}); 

は、別のDOM要素をクリックしてモーダルウィンドウを開いたときにトリガーされます。

<a data-remodal-target="modal-window-id" id="trigger">CLICK ME TO OPEN MODAL</a> 

<div class="remodal data-remodal-id="modal-window-id>MODAL CONTENT</div> 

さて、私はまた、javascriptをファイルにクリックイベント

$(document).on('click', '#trigger', function (e) { 
    console.log('trigger clicked'); 
}); 

への次の呼び出しを追加する場合にかかわらず、前のスクリプト(すなわち、他の前または後)の位置の、私は見ます以前はopeningイベントが発生しています。 Javascriptでは、いくつかの例外やjQuery(例えば、適切な順序でリスナーを付けるなど)を除いて、実際にはイベントの実行を保証するものではありません。

openingより前にclickを実行するにはどうすればよいですか?前に実行されますが、何らかの理由で、以前に実行されたアンカーに別のclickリスナーが接続されている必要があります。

+0

をクリックハンドラの後に実行ハンドラのコードの実行を強制するには、常にsetTimeout( "console.log( 'opening');"、100);を使用します。フィードバックのために – mjw

+0

@mjwを遅らせてください。信頼できる解決策ではないようです。最初のクリックに100ms以上かかるとどうなりますか? –

+0

console.log idkに100ミリ秒以上かかる場合) – mjw

答えて

1

何が本当に後にしていることはクリックハンドラの後に実行するように開口部ハンドラのコードの実行を強制する方法であれば、あなたはいつものsetTimeoutを使用することができます:あなたは本当に後にしていることの方法である場合

setTimeout("console.log('opening');",100);