[英]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
的鼠標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")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.