我有一个带按钮的音板,可以在mousedown上触发AJAX帖子。
理想的功能是在左侧mousedown播放音频并在右侧mousedown取消播放。
到目前为止我的代码禁用了上下文菜单并取消了播放...但是,如果它们在右键单击时触发了一个按钮(触发其他先前定义的事件),它仍将遵循mousedown和play那个音频。
$(document).ready(function(){
document.oncontextmenu = function() {return false;};
$(document).mousedown(function(e){
if( e.which == 3 ) {
e.preventDefault();
Cancel_Playback();
return false;
}
return true;
});
});
我正在尝试禁用右侧mousedown来触发先前定义的事件但是尊重Cancel_Playback。有什么想法吗?
修改 更新标题和说明以更准确地反映我想要完成的内容。这也应该有所帮助:http://jsfiddle.net/g9sh1dme/15/
答案 0 :(得分:1)
stopImmediatePropagation可能是您正在寻找的功能。
它取消绑定到同一元素的所有其他事件以及DOM中更高的任何其他代理。顺序也很重要,因为事件按照它们被绑定的顺序被调用。您只能取消在取消事件后绑定的事件。
我不确定这些更改是否能保持程序的有效性,但它会证明该功能的使用。否则,我只是检查Play_Sound
中的右侧mousedown并退出,而不是依赖另一个事件来取消其执行。
的 Live Demo 强>
$(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")
}