私は JS ファイルが jQuery イベントを介して相互に通信する必要があり、それはかなり簡単だと思っていましたが、助けが必要だと思う問題に遭遇しました。
基本的に、ID が「#nav-controller」の DOM 要素を使用して、2 つの JS ファイル間のメッセンジャーとして機能します。最初のファイル (最初に実行するファイルであることを確認しました) は、次の 2 つのカスタム イベントをリッスンします。
function external_command_listener () {
// Click Handling
$( '#nav-controller' ).on( 'clickhandler' , function ( e , param ) {
alert ("registering clicks to: " + param );
register_qs_click_handler ( param );
});
// Menu Control handling
$( '#nav-controller' ).on( 'controlframework' , function ( e , param ) {
alert ('registering menu handling to: ' + param );
register_qs_control_framework ( param );
});
}
これでセットアップは完了です。2 番目のファイルは、trigger() を使用して、最初のファイルの関数を効果的に呼び出します。コードは次のとおりです。
function Initialise_Navigation () {
navTemplate = Template_File_Name ( 'navigation' );
$.get( navTemplate , function (data) {
$( '#page-nav-system' ).html(data);
$( '#nav-controller' ).trigger( 'clickhandler' , ['#application li'] ); // register a click handler
$( '#nav-controller' ).trigger( 'controlframework' , ['.quicksand-cntrl'] ); // register a control framework
Chrome のデバッガーを使用して、Initialise_Navigation() 関数を実行し、両方のトリガー ステートメントを実行しているように見えますが、最初のファイルでセットアップされたリスナーがアクティブにならないことをテストしました。一般的な「クリック」イベントでも試してみましたが、それも失敗しました。
何か案は?私はロープの終わりにいます。