簡體   English   中英

防止鼠標右鍵單擊時先前定義的事件僅用於右鍵單擊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM