2014-09-20 94 views
1

我想處理點擊特定元素我自己。 因此,如果我用鼠標左鍵單擊它,它將打開當前選項卡中的鏈接,如果我用中間按鈕單擊它,它會在新選項卡中打開它。 我想通過從鏈接獲取href屬性並使用window.open()自己處理點擊鏈接 - jQuery Mousedown

這是甚至可能不會遇到popupblocker問題?

因此,對於初學者,我試圖阻止鏈接的打開。

HTML:

<a href="somelink.php" class="prev_cl"><img src="someimg.png" /></a> 

的Javascript:

$(function() { 
    $('.prev_cl').on('mousedown', function(e){ 
     return false; 
    }); 
}) 

但即使這是行不通的,它仍然打開的鏈接。 如果我在「返回false」之前放置了警報,它實際上不會觸發點擊並顯示警報框。但是每當他們點擊一個鏈接時,誰想要一個警報框?

我也嘗試同時使用鼠標鬆開鼠標按下和事件,但沒有工作,要麼

我想另一件事是把返回虛假元素本身,意思是:

<a href="somelink.php" onclick="return false" class="prev_cl"><img src="someimg.png" /></a> 

然後在JavaScript部分我添加了window.open()它

但1)與middlemousebutton點擊仍然工作,並且2)Firefox阻止窗口的打開,因爲它認爲它是一個彈出式窗口

回答

0

將您的處理程序放在click事件中,而不是mousedown

$(function() { 
 
    $('.prev_cl').on({ 
 
     'click': function(e){ 
 
      \t if (e.which == 1) { 
 
       var button = "left"; 
 
      } else { 
 
       button = "middle"; 
 
      } 
 
      console.log(button+" click"); 
 
      console.log(e.which); 
 
      e.preventDefault(); 
 
     }, 
 
     'contextmenu': function(e) { 
 
      console.log("right click"); 
 
      console.log(e.which); 
 
      e.preventDefault(); 
 
     } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="somelink.php" class="prev_cl"><img src="someimg.png" /></a>

+0

即使這樣的工作,我需要區分(或者它會是不錯的),左鍵點擊之間middleclick。 Afaik這是不可能的'點擊'或我錯了嗎? – Drencrom 2014-09-20 18:15:38

+0

您可以使用'contextmenu'事件來處理右鍵單擊。我仍在研究中間按鈕。 – Barmar 2014-09-20 18:29:22

+0

我沒有中間按鈕的鼠標,所以我不確定我的答案是否真的有效。如果'click'不觸發它,可能需要使用'mousedown'來捕獲中間按鈕。它應該檢查'e.which == 2'的情況。 – Barmar 2014-09-20 18:40:17

0

的jQuery event.preventDefault()可用於防止事件的默認操作,在這種情況下點擊

http://api.jquery.com/event.preventdefault

此外,您還可以趕上中等(或)這樣的鼠標鍵:Jquery: detect if middle or right mouse button is clicked, if so, do this:

+0

不起作用,我把它放在mousedown和mouseup上,並嘗試'點擊' – Drencrom 2014-09-20 18:21:40

+0

'return false'和調用'event.preventDefault()'的功能相同。 – Barmar 2014-09-20 18:24:49

+0

我知道如何檢測mousedown中的中間點擊,但我仍然需要防止默認操作,那是我現在的主要問題 – Drencrom 2014-09-20 18:26:54