无法在初始化时绑定事件处理程序
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 事件?