2010-07-17 60 views
5
<a href="<?=$rowz[0]?>" onClick="countLinks('<?=$row[6]?>','<?=$indexl?>')">[Link <?=$j++?>]</a> 

問題是,它不適用於IE或Firefox中的中間按鈕。 實際上,使用中間按鈕的countLinks僅與chrome一起調用。使用onClick()和鼠標上的中間按鈕問題

我想我需要一個jQuery的功能,如mouseup事件,只是我不知道如何調用該函數,它使用那些參數調用countLinks

任何幫助?

+1

+ 1 for ** rowz **。1337! – jAndy 2010-07-17 20:10:01

+0

[觸發onclick事件使用中點擊]可能的重複(http://stackoverflow.com/questions/1795734/triggering-onclick-event-using-middle-click) – rds 2013-09-18 18:37:47

回答

6

你說得對。您需要使用mousedownmouseup事件來確定實際單擊了哪個鼠標按鈕。

但首先,您需要擺脫那個內聯事件處理程序onclick並遵循不顯眼的javascript的光輝之路。

因爲你需要給錨點一個idclass標籤來標識它(當然你也可以選擇用CSS選擇器來選擇錨點)。讓我們假設我們已經增加了一類名爲myClazzz :)

的javascript:

$(function(){ 
    $('.myClazzz').bind('mouseup', function(e){ 
     switch(e.which){ 
      case 1: 
       alert('Left Mouse button pressed.'); 
      break; 
      case 2: 
       alert('Middle Mouse button pressed.'); 
      break; 
      case 3: 
       alert('Right Mouse button pressed.'); 
      break; 
      default: 
       alert('You have a strange Mouse!'); 
     } 
    }); 
}); 

一個mousedown/mouseup事件處理程序中的which屬性將包含一些指示單擊了哪個mousebutton。

+2

+1但爲什麼不點擊?你也可以看到被點擊的按鈕是左,中,還是右... Mouseup mousedown可能會有不同的表現跨瀏覽器。 – Sinan 2010-07-17 20:23:59

+0

@Sinan Y .:那個javascript'click'事件結合了'mousedown' +'mouseup',並且只在點擊左鍵時觸發。 – jAndy 2010-07-17 20:26:36

+0

呃...所以我需要爲每個案例(1-2-3)提供相同功能的副本?以及如何將參數(如$ row [6]和$ indexl)傳遞給該函數? – markzzz 2010-07-17 22:58:59

2

這是一個快速解決方案,通過使用一些html5 attributes ...其實它也可以在html5之前,但它不驗證。

我創建鏈接如下:

<a class="myClazzz" href="<?=$rowz[0]?>" data-row="<?=$row[6]?>" data-index="<?=$indexl?>">...</a>

_here我們把你的參數data屬性

,寫這樣的JS:

$(function(){ 
    //use mouseup, then it doesn't matter which button 
    //is clicked it will just fire the function 
    $('.myClazzz').bind('mouseup', function(e){ 
     //get your params from data attributes 
     var row = $(this).attr("data-row"), 
      index = $(this).attr("data-index"); 

     //and fire the function upon click 
     countLinks(row,index); 
    }); 
}); 
//don't forget to include jquery, before these lines;) 

希望這個作品ou噸。思南。

PSmyClazzz - >學分轉到jAndy :)

+0

uoo。 ..在鏈接上的語法之前(我的意思是data-var stat)。我需要學習它:)明天我會檢查這個功能,現在在意大利(上午3點),它有點遲了! tnx man – markzzz 2010-07-18 01:13:38

+4

僅供參考:'$(this).data('row')'與$(this).attr('data-row')' – WildlyInaccurate 2013-03-06 14:30:24

1

的這個行爲是由瀏覽器相當變數。請參閱https://code.google.com/p/chromium/issues/detail?id=255#c106。據認爲,那些你問:

  • 「IE不一樣,如果目標是一個鏈接觸發一個click事件,但觸發它 點擊另一個元素,即使它的後代一條鏈接。」

  • 「Gecko總是觸發文檔上的一個點擊事件,該文檔冒泡並且以 爲目標點擊該元素。「

對於Firefox,所以你可以這麼做:

$(document).click(
    function (evt) { 
    // ... evt.which === 2 means middle click 
    } 
); 

這是怎樣的一招(通常你會聽的鏈接本身的事件),但它的作品的