javascript - 访问嵌套事件绑定(bind) JavaScript 中的对象

标签 javascript html5-audio

我正在尝试在音频结束事件中绑定(bind)音频重播事件。我无法访问附加了音频结束事件的实际父对象。

var audio = new Audio('audiofile.mp3');
audio.addEventListener('ended', function() {
    $("#replayButton").bind('click', function(){
        audio.play(); //why i couldn't access the audio object
    });
});

最佳答案

您可以在外部函数中绑定(bind)变量:

audio.addEventListener('ended', function() {
    var self = this;
    $("#replayButton").bind('click', function(){
        self.play(); //why i couldn't access the audio object
    });
});

但是,将一个事件处理程序绑定(bind)到另一个事件处理程序中通常不是一个好主意。当您重播音频时,当它结束时,您将绑定(bind)另一个点击处理程序。因此,如果用户再次单击重播按钮,它将开始播放两次。

.one() 方法可能更适合这种情况,因此 click 处理程序仅在每次结束后运行一次。所以应该是:

audio.addEventListener('ended', function() {
    var self = this;
    $("#replayButton").one('click', function(){
        self.play(); //why i couldn't access the audio object
    });
});

关于javascript - 访问嵌套事件绑定(bind) JavaScript 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25718926/

相关文章:

javascript - 有没有比使用 if/then 语句更好的解决方案?

javascript - 中心标签内左侧的位置栏

jquery - Cors Html5 Jquery/SoundManager 奇怪

jquery - Html 5 Audio 在 iphone safari 浏览器中不起作用

javascript - 下拉文本不会重新出现,也不会识别其他实例

javascript - JavaScript中如何处理和辨别继承冲突?

javascript - 如何使用各种 rampToValueAtTime 方法

javascript - Javascript音频播放器-将.ogg添加到.mp3数组

javascript - 如何查找 SoundCloud 的轨道信息和 client_id

Javascript - RegExp - 替换最后一次出现的非数字