2012-11-04 66 views
3

我有一个相当大且复杂的JavaScript模块,用于我的网站的多个页面。经过一番搜索和小提琴之后,我想出了以下结构,当模块的某个功能在特定页面上运行时,可以运行一些额外的代码。在jQuery中简洁地添加自定义事件触发器

// within module definition that is used across multiple pages 
function some_module_method(){ 
    $.event.trigger('custom_event'); 
} 

// bit of functionality that I'm trying to add to a single page 
$('#some-element').on('custom_event', function(){ 
    console.log('The custom event has just been triggered!'); 
}); 

我遇到的一个问题是,当我期待这个事件只触发一次时,它会快速连续熄灭2-4次。这是我用来触发并附加此事件的上述结构的问题,或者可能是其他情况?

另外,如何在不引用某个DOM对象的情况下将函数附加到事件?只需使用$ .on()不起作用。

这是我在Stack Overflow上的第一篇文章。你们是如此惊人的资源,我想开始回馈这个社区。

回答

2

对于你的第一个问题,没有看到一个例子有点难说。我可能会误解,但我很确定$ .trigger()不会像你使用它一样工作。它必须附加到一个jQuery对象,例如.. $().trigger()

而对于第二个问题......您不必完全使用DOM元素,但可以使用空的jQuery对象,如$({}).on()。见this fiddle

希望这有助于一些。

在附注上,您可能会混淆jQuery对象方法和核心方法。 here是一个小的信息,以防万一。使用

+0

对不起,代码我跑是$ .event.trigger( 'CUSTOM_EVENT')。我相应地纠正了我的问题。谢谢! –

+0

啊好的。在这种情况下,我认为你可能会使用$ .Event错误。查看示例[here](http://docs.jquery.com/Events/trigger)。 – brains911

1

$('#some-element').trigger('custom_event'); 

代替

$.trigger('custom_event'); 
相关问题