【问题标题】:Succinctly Adding Custom Event Triggers in jQuery在 jQuery 中简洁地添加自定义事件触发器
【发布时间】:2012-11-04 07:01:51
【问题描述】:

我有一个相当大且复杂的 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 上的第一篇文章。你们真是一个了不起的资源,我想开始回馈这个社区。​​p>

【问题讨论】:

    标签: javascript javascript-events event-handling jquery


    【解决方案1】:

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

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

    希望这会有所帮助。

    附带说明一下,您可能会将 jQuery 对象方法与核心方法混淆。 here 是一个小信息,以防万一。

    【讨论】:

    • 抱歉,我运行的代码是 $.event.trigger('custom_event')。我已经相应地纠正了我的问题。谢谢!
    • 啊,好吧。在那种情况下,我认为您可能使用 $.Event 错误。查看示例here
    【解决方案2】:

    使用

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

    而不是

    $.trigger('custom_event');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2012-10-31
      • 2012-06-08
      • 2011-05-18
      • 2015-07-06
      • 1970-01-01
      相关资源
      最近更新 更多