移除监听器类并不能停止与Jquery Javascript相关的声音事件
Removing a listener class doesn't stop a sound event associated Jquery Javascript
我在图像上悬停时播放声音(这已经工作得很好了),并希望包含一个按钮来关闭它,如果需要的话。不幸的是,我还没能使它工作。
我现在的代码是这样的:
用于创建声音
//a bunch of code to generate the audio that ends on
var mouseoversound = createsoundbite('mysound.mp3')
用于触发
$(".play").mouseover(function() {
mouseoversound.play();
});
监听器元素
<%= image_tag "image.png", class:'logo-image play' %>
我认为禁用它的最简单的解决方案是删除类"监听"事件(即。'.play')在元素监听器中,所以我累了:
$(".sound").click(function(){
$(".logo-image").removeClass("play");
});
//.sound is the class of the button that's intended to block it.
虽然后一个脚本确实成功地删除了类"播放"的声音保持播放每次我悬停在图像上。我错过了什么?难道声音不应该停止播放吗?
你认为还有其他解决办法吗?
欢呼
问题是事件处理程序绑定到元素。在绑定事件后删除类不会影响该绑定。要影响事件处理程序,可以调用off()
,像这样:
$(".sound").click(function(){
$(".logo-image").off('mouseover');
});
或者,如果您想根据类切换声音功能,您可以保持当前的逻辑并检查元素在mouseover
处理程序中是否仍然具有类:
$(".logo-image").mouseover(function() {
if ($(this).hasClass('play') {
mouseoversound.play();
}
});
$(".sound").click(function(){
$(".logo-image").toggleClass("play");
});
相关文章:
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 在同一个javascript事件处理程序中调用不同的函数
- Javascript事件;在新选项卡中打开”;
- 存在每个时间元素的javascript事件
- Javascript事件.锚的目标问题
- 带有参数的Javascript事件处理程序
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- firefox中的Javascript事件范围问题
- Firefox中的JavaScript事件参数
- 在动态加载的PHP表单上放置JavaScript事件
- 如何在Javascript事件上从JSNI设置GWTClass字段
- Javascript事件发射器一次处理多个事件
- 在下拉式javascript事件监听器中选择时触发事件
- 在javascript中导入xlsx文件时,如何手动强制javascript事件
- 显示触发的JavaScript事件
- 正在取消IE11中的JavaScript事件
- 页面卸载期间的JavaScript事件循环
- 存在其他参数时访问Javascript事件
- 阻止Javascript事件影响子元素
- 如何在事件处理程序中获取 javascript 事件对象