2012-08-05 37 views
0

我需要在JavaScript NameSpace中创建自定义事件,但我不知道它是否可能。在命名空间中创建自定义事件

我有这样一个命名空间:

NAMESPACE = { 

    var1 : 'value', 
    var2 : 'value', 

    initiate : function() { 
     console.log('initiate'); 
    }, 

    clear : function(arg) { 
     console.log('clear'); 
    } 

    fail : function() { 
     // Here i need to trigger the error event.. 
    } 

} 

这就产生了用此方法事件:

var myEvent = new CustomEvent("errorX", { 
    data: { 
    param: "value" 
    } 
}); 

document.dispatchEvent(myEvent); 

// In document.ready... 
$(document).on('errorX', function(e) { 
    console.log(e); 
}); 

这工作,但我需要的addEventlistener连接到document,我想附加到命名空间对象,如:

$(NAMESPACE).on('errorX', function(e) { 
    console.log(e); 
}); 

这可能吗?

回答

1

可以使用.triggerHandler方法:

$(NAMESPACE).on('errorX', function(e) { 
    console.log(e); 
}); 

$(NAMESPACE).triggerHandler("errorX"); 

演示:http://jsfiddle.net/Enq9h/

+0

@Zenth你不需要'.dispatchEvent'可言,jQuery的不使用它。它使用'.triggerHandler' /'.trigger' – Esailija 2012-08-05 12:41:28

+0

我更新你的例子试图使我的代码类似,但没有得到事件params ..可能的原因? – Zenth 2012-08-05 13:12:26

+0

@十三你在哪里更新你的例子? – Esailija 2012-08-05 13:17:35