我有一个相当大且令人费解的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()
不起作用。
对于您的第一期,很难说而不看到示例。而且我可能会误会,但是我敢肯定,$ .trigger()不会像您使用的那样工作。它必须连接到jQuery对象,例如$().trigger()
。
对于您的第二个问题...您不必完全使用DOM元素,但是您可以使用像$({}).on()
这样的空jQuery对象。看到这个小提琴。
希望这对一些有帮助。
在旁注上,您可能会将jQuery对象方法与核心方法混淆。以防万一。
使用
$('#some-element').trigger('custom_event');
而不是
$.trigger('custom_event');