0
我想让JS文件通过jQuery事件相互通信,并认为它会非常直接,但遇到了问题,我认为我需要帮助。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()函数,并反过来显然都运行触发声明,但在第一个文件从未激活监听器设置进行测试。我也尝试过,只是一个普通的'点击'事件,但也失败了。
任何想法?我在我的绳索末端。
用于通信的基本原理是,有两个有责任的组件,并且我想保持依赖关系最小化(也就是说,可以与适当的JS事件进行通信),这也可以帮助确保这些对象之间的同步已经实现了 – ken
我认为你展示的代码实际上和我的是一样的,不是吗?你的#parentalElement是我的#nav控制器。 – ken
问题我'我真的试图深入研究的是,为什么我的听众实际上没有选择由“触发”方法触发的事件。 – ken