2012-11-04 69 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'); 
相關問題