我希望 JS 文件通过 jQuery 事件相互通信,并认为这会很简单,但遇到了一个我认为我需要帮助的问题。
基本上,我使用 ID 为“#nav-controller”的 DOM 元素充当两个 JS 文件之间的信使。第一个文件——我已经检查过它是第一个执行的——监听两个自定义事件:
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 );
});
}
现在已经设置好了。第二个文件使用 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() 函数,并且显然运行了两个触发器语句,但第一个文件中的侦听器设置从未激活。我也尝试了一个通用的“点击”事件,但这也失败了。
有任何想法吗?我已经走到尽头了。