jQuery自定义事件无法正常工作

时间:2012-05-05 17:11:15

标签: jquery

我想让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()函数,然后显然运行了两个触发器语句,但第一个文件中的侦听器设置从未激活。我只是通过一个通用的“点击”来尝试它。事件,但太失败了。

有什么想法吗?我在绳子尽头。

1 个答案:

答案 0 :(得分:0)

我可能过度简化了这一点 - 但是,为什么你需要在两个JS 文件之间实现“通信”?他们是否处于某种OO模式?它们是否在不同的范围内运行?

在任何情况下,您都可以简单地将事件处理程序绑定到{DOM}树中的document对象(或任何其他包含的 parental 对象。

// Even binding
$('#parentalElement').bind('customEventString', function(event, params... ) {
  // Handle the event
});

// Trigger 
$('#foo').trigger('custom', params );