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