• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

eventListener多次发射并增加

JavaScript 来源:MikeyB 3次浏览

在点击功能中,我可以选择播放音频。eventListener多次发射并增加

点击只会触发一次(在我添加了.off()后,我似乎必须为每个点击事件执行操作,因为我认为我从根本上无法了解javascript的工作原理),但添加到“结束“的监听程序显示它触发按钮被点击的次数。我猜想.play()也被解雇多次。

这些需要在点击事件内部才能得到id,那么如何在使用js时在这里和其他地方停止发生这些事情?添加event.stopPropagation(),event.bubbles = false.off()似乎无处不在(在这种情况下,无论如何不会产生影响)。

$('.button').off().on('click', function(event){ 
    event.stopPropagation(); 
    event.bubbles = false; 
    var id = $(this).attr('id') 
    if ($(this).hasClass('hasAudio')) { 
     document.getElementById('audio_'+id).play(); 
     document.getElementById('audio_'+id).addEventListener("ended", function(){ 
      console.log("ended"); 
     }); 
    } 
}); 


===========解决方案如下:

移动ended事件的点击事件外,你点击按钮

$('.button').on('click', function(event){ 
    var id = $(this).attr('id') 
    if ($(this).hasClass('hasAudio')) { 
     document.getElementById('audio_'+id).play(); 

    } 
}); 
$('[id^="audio_"]').on("ended", function(){ 
    console.log("ended"); 
}); 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)