3

我有一个相当大且复杂的 javascript 模块,用于我网站的多个页面。经过一番搜索和摆弄后,我想出了以下结构,以便在模块的一个功能在特定页面上运行时运行一些额外的代码。

// 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 上的第一篇文章。你们真是一个了不起的资源,我想开始回馈这个社区。

4

2 回答 2

2

对于您的第一个问题,如果没有看到示例,就很难说。我可能弄错了,但我很确定 $.trigger() 不会像你使用它那样工作。它必须附加到一个 jQuery 对象,例如。$().trigger().

对于你的第二个问题......你不必完全使用 DOM 元素,但你可以使用一个空的 jquery 对象,如$({}).on(). 看到这个小提琴

希望这会有所帮助。

附带说明一下,您可能会将 jQuery 对象方法与核心方法混淆。这里有一些信息以防万一。

于 2012-11-04T07:50:00.723 回答
1

采用

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

代替

$.trigger('custom_event');
于 2012-11-04T07:57:45.977 回答