无法在初始化时绑定事件处理程序

Posted

技术标签:

【中文标题】无法在初始化时绑定事件处理程序【英文标题】:Unable to bind event handler at init 【发布时间】:2014-09-01 14:25:13 【问题描述】:

我有一个动态创建音频预览元素的表单。我想在浏览器处理完音频元素后执行代码。以下作品:

如果在创建音频元素后执行,则有效

  $('audio').on('loadeddata', ->
    alert "test audio"
  )

但它仅在我在创建元素后绑定事件时才有效。我正在寻找一种将事件绑定到文档加载时所有未来“音频”标签的方法。以下方法不起作用:

从不工作

$(document).on('loadeddata', 'audio', ->
  alert "test audio"
)

以下总是有效的

$(document).on('click', 'audio', ->
  alert "test audio"
)

我的目标是能够在我的文档加载时绑定一次these events。任何帮助或见解将不胜感激。

编辑

因为我使用带有 turbolinks 的 Rails,所以我执行上面的 sn-ps 并带有 ready 和 onload 事件。所以代码是:

reload = ->
  #relevant code here

$(document).on 'page:load', reload

$ -> reload()

【问题讨论】:

尝试在window.onload中绑定代码,而不是$(document).ready() 感谢@Bongs,我实际上已经在做这两件事了。见编辑 【参考方案1】:

在您的文档完全加载后开始您的事件处理:

$(document).ready(function()
    $(document).on('loadeddata', 'audio', function()
      alert "test audio"

     );
);

【讨论】:

【参考方案2】:

尝试在里面绑定这些事件

$(document).ready(function()
        // bind your events here
);

【讨论】:

以上是关于无法在初始化时绑定事件处理程序的主要内容,如果未能解决你的问题,请参考以下文章

为啥事件处理程序只能在 IHttpModule 初始化期间绑定到 HttpApplication 事件?

仅当事件处理程序不存在时,如何才能绑定它?

当组件被销毁时,Angular 如何销毁事件处理程序和属性绑定

无法理解react.js中的处理事件[关闭]

为什么ajax加载出来的html,无法用选择器绑定事件?

CAD二次开发之鼠标事件捕捉绑定