2010-10-04 66 views
1

我想這樣做:當您單擊頁面上的鏈接時,它會正常打開鏈接,但是當您雙擊鏈接時,它會提醒鏈接的' href'屬性。如何觸發鏈接的「ondblclick」事件

但是,當我嘗試雙擊一個鏈接時,它會一直打開鏈接。任何想法?

回答

1

第一次點擊雙擊後鏈接將打開,因此您需要添加時間延遲以確定哪個是哪個。以下是一些代碼(爲簡潔起見,使用jQuery JavaScript庫)適用於除Internet Explorer之外的所有瀏覽器(try it out)。如果你能弄清楚爲什麼它沒有,我想知道。

$('a').click(function(event) { 
    var elem = $(this), 
     clickTimeout = elem.data('clickTimeout'); 

    if(clickTimeout) {   
     // Double click; cancel the single click timeout 
     clearTimeout(clickTimeout); 
     elem.data('clickTimeout', null); 

     alert(elem.attr('href')); 

    } else { 
     // Might be a single click; wait and see 
     elem.data('clickTimeout', setTimeout(function() { 
      // Single click; timeout was not cancelled 
      elem.data('clickTimeout', null); 

      // Navigate to the link's URL 
      window.location.href = elem.attr('href'); 

     }, 500)); 
    } 

    // Stops propagation and prevents default action 
    return false; 
}); 
+0

greate solution! – wong2 2010-12-30 05:08:12

0

雙擊是兩次點擊。因此,它觸發了點擊事件。

0

因爲onclick事件在ondbclick事件之前被觸發。 這就是爲什麼ondblclick沒有得到執行的原因 - >鏈接首先被加載。

1

也許這只是一個錯字:您正在尋找的事件被命名爲ondblclick,而不是ondbclick

1

爲避免鏈接被打開,您可能需要改用right-clicks

0

這很棘手,因爲事件的順序在所有瀏覽器中都不相同。看看這篇文章:http://unixpapa.com/js/mouse.html下的雙擊。

您可以取消單擊鏈接的默認操作併爲click事件編寫自己的處理程序。