防止以前在mousedown上定义的事件只用于右键单击
prevent previously defined events on mousedown for right-click only
我有一个响板,上面有一些按钮,可以在鼠标按下时触发AJAX帖子。
理想的功能是用鼠标左键播放音频,用鼠标右键取消播放。
到目前为止,我的代码禁用了上下文菜单并取消了播放。。。但是,如果他们右键单击时在按钮上(这会触发其他先前定义的事件),它仍然会按下鼠标并播放该音频。
$(document).ready(function(){
document.oncontextmenu = function() {return false;};
$(document).mousedown(function(e){
if( e.which == 3 ) {
e.preventDefault();
Cancel_Playback();
return false;
}
return true;
});
});
我试图禁用鼠标右键来触发之前定义的事件,但要遵守Cancel_Playback。有什么想法吗?
编辑更新了标题和描述,以更准确地反映我正在努力实现的目标。这也应该有助于:http://jsfiddle.net/g9sh1dme/15/
stopImmediatePropagation可能就是您要查找的函数。
它取消了绑定到同一元素的所有其他事件以及DOM中更高级别的任何其他委托。顺序也很重要,因为事件是按绑定顺序调用的。您只能取消在执行取消操作的事件之后绑定的事件。
我不确定这些更改是否能保持程序的有效性,但它展示了函数的用途。否则,我只需要在Play_Sound
中检查鼠标右键并退出,而不是指望另一个事件取消执行。
实时演示
$(document).ready(function(){
document.oncontextmenu = function() {return false;};
//For this to work you must bind to the same object or you must bind to something lower in the DOM.
$(".sound").mousedown(function(e){
if( event.which == 3 ) {
Cancel_Playback();
e.stopImmediatePropagation();
return false;
}
return true;
}).mousedown(Play_Sound);
})
function Cancel_Playback() {
alert("This is all that should be displayed on right-mousedown")
}
function Play_Sound() {
alert("Display this on left-mousedown... but not on right-mousedown")
}
相关文章:
- ng更改事件不适用于Dropdown
- 主干模型更改事件只触发一次
- 简单的onclick事件只起过一次作用
- 事件不适用于通过Ajax推杆的元素
- onclick事件不适用于phone gap android
- 收集订阅者的流星事件,用于在 mongodb 中新插入文档
- js事件,用于函数内部的when语句变为true
- Jquery事件只工作一次
- 事件只运行一次
- jQuery.on('点击'..事件只触发一次
- 焦点事件不适用于动态生成的文本框
- mouseover,out and click事件不适用于折线
- Javascript onkeydown事件只触发一次
- 在for循环中触发onchange事件只运行一次
- ng-click事件不适用于Angular JS中的链接
- onsubmit 事件不适用于异步表单提交
- JS单击事件不适用于暂停CSS动画
- 多个事件,用于触发 Chrome 书签 API 中的单个函数
- JS中的事件只适用于foreach中的第一个检查表
- jQuery表单提交事件只适用于Chrome浏览器