我正在使用散列鏈接的onclick
事件作爲彈出窗口打開<div>
。但是中間點擊不會觸發onclick
事件,但只會獲取鏈接的href
屬性值並將該URL加載到新頁面中。我如何使用中間點擊來打開<div>
作爲彈出窗口?使用中點擊觸發onclick事件
回答
請求的答案是正確的,但它聽起來像要防止中間點擊的默認操作。在這種情況下,請包括以下內容
$("#foo").on('click', function(e) {
if(e.which == 2) {
e.preventDefault();
alert("middle button");
}
});
preventDefault()將停止事件的默認操作。
請記住,'.live'已被棄用,並且被'.on'所取代。 – Neal 2013-07-16 15:29:40
在firefox中無效 – 2014-11-17 10:52:17
要在FF中使用此工作,請執行以下操作:var evt = e || window.event; – 2015-09-04 06:23:28
您可以使用
,以確定被點擊哪一個鼠標按鍵。
返回一個整數值,指示更改狀態的按鈕。
- 0標準的「點擊」,通常左鍵
- 1中間的按鈕,通常車輪單擊
- 2右鍵,通常用鼠標右鍵單擊
注意,這個慣例在Internet Explorer中未遵循:有關詳細信息,請參閱 QuirksMode。
根據指針設備的配置方式,按鈕的順序可能不同。
又讀
Which mouse button has been clicked?
有兩個屬性尋找 出哪一個鼠標按鍵一直 點擊:這和按鈕。請注意0這些屬性並不總是 工作在點擊事件上。爲了安全 檢測鼠標按鈕,你必須使用 mousedown或mouseup事件。
我建議使用'event.which',因爲它已經在jQuery源代碼中的瀏覽器中標準化了 - 第2756行 - if(! (event.button&2?3:(event.button&4?2:0)));' – 2009-11-25 10:04:51
@RussCam但是, 'MouseEvent.which'沒有在任何規範中定義,而是'MouseEvent。按鈕「在DOM L2事件中定義。 – Oriol 2015-01-12 02:41:23
@Oriol正確,但在不同的瀏覽器供應商中的實現方式不同。 OP用jQuery標記了問題,所以我建議使用'event.which',但應該詳細說明'MouseEvent.which'不是官方規範的一部分。 – 2015-01-12 02:52:24
jQuery提供在從左至右爲1,2,3,在這種情況下,你要給人的點擊按鈕的ID的事件.which
屬性2
用法:
$("#foo").live('click', function(e) {
if(e.which == 2) {
alert("middle button");
}
});
的adamantium的回答也將工作,但需要注意IE,他指出:
$("#foo").live('click', function(e) {
if((!$.browser.msie && e.button == 1) || ($.browser.msie && e.button == 2)) {
alert("middle button");
}
});
還記得.button
屬性是0索引而不是1索引像.which
。
正確的方法是使用.on
,爲.live
已經從jQuery的棄用,然後刪除:
$("#foo").on('click', function(e) {
if(e.which == 2) {
e.preventDefault();
alert("middle button");
}
});
或者,如果你想在「現場」般的感覺和#foo
不在網頁上文件開始:
$(document).on('click', '#foo', function(e) {
if(e.which == 2) {
e.preventDefault();
alert("middle button");
}
});
我知道我遲到了派對,但對於那些在處理中間點擊時仍然有問題的人,請檢查您是否委派了該事件。在委派的情況下,click
事件不會觸發。比較:
這適用於中間點擊:
$('a').on('click', function(){
console.log('middle click');
});
這並不適用於中點擊工作:
$('div').on('click', 'a', function(){
console.log('middle click');
});
如果您仍然需要使用跟蹤中間點擊事件代表團,如相應的jQuery ticket中所述的唯一方法是使用mousedown
或01改爲。像這樣:
這適用於委託中間點擊:
$('div').on('mouseup', 'a', function(){
console.log('middle click');
});
這個問題是有點老了,但我找到了解決辦法:
$(window).on('mousedown', function(e) {
if(e.which == 2) {
e.preventDefault();
}
});
瀏覽器不火的「點擊」事件鼠標滾輪
在FF和Chrome
工作我通常當人們提供替代方案而不是解決方案時討厭,但是由於已經提供瞭解決方案,我將打破我自己的規則。
中間點擊功能被覆蓋的網站往往真的,真的讓我煩惱。我通常是中間點擊,因爲我想在新標籤中打開新內容,同時對當前內容進行無障礙視圖。任何時候,您都可以單獨保留中間點擊功能,並通過單擊元素的HREF屬性使相關內容可用,我堅信您應該這樣做。
- 1. 使用dojo/javascript觸發點擊事件?
- 2. 使用jquery點擊事件觸發AJAX
- 3. javascript onclick觸發鍵點擊(使用jQuery)
- 4. jQuery觸發點擊事件
- 5. 觸發點擊事件
- 6. 點擊事件未觸發
- 7. JQuery:觸發點擊事件
- 8. 點擊事件觸發
- 9. 觸發點擊事件PhantomJS
- 10. 觸發改變事件點擊事件
- 11. LongClick事件也觸發點擊事件
- 12. radtreeview節點不會觸發onClick事件?
- 13. 使用onClick事件觸發CSS3轉換
- 14. 使用URL觸發onClick事件
- 15. 點擊按鈕之前onclick事件觸發 - javascript
- 16. 點擊鏈接不應觸發父母的onclick事件
- 17. 的onClick沒有觸發點擊事件處理
- 18. JavaScript onclick事件沒有任何點擊被觸發
- 19. Android Button OnClick事件觸發多次點擊後
- 20. onClick事件觸發之前點擊反應
- 21. 用參數觸發點擊事件
- 22. 用Jquery觸發一個點擊事件
- 23. 如何用jQuery觸發點擊事件
- 24. 觸發Firefox中的點擊事件
- 25. 手動點擊事件觸發Flex中
- 26. onclick事件沒有點擊發射
- 27. 使用不同的點擊事件後jQuery點擊事件不會觸發
- 28. 子div點擊事件觸發父母點擊事件
- 29. 兒童元素點擊事件觸發父點擊事件
- 30. 觸發onclick事件的JavaScript
我還是不明白問題如何解決,當中間點擊不會觸發onclick事件。 – 2013-08-31 14:45:14
@TomášZato瀏覽器不會通過中點擊觸發'點擊'事件,但他們可能會觸發'mouseup'事件。然後,JavaScript框架可能會將此綁定到「點擊」操作以混淆你。我推薦閱讀http://www.unixpapa.com/js/mouse.html – rds 2013-09-18 18:29:55