2011-08-26 19 views
3

有沒有辦法禁用(使用CSS,JS或jQuery)雙擊給定的元素?爲Opera中的元素禁用doubleclick事件

Opera的問題在於,當我點擊某個元素的速度過快時,它會顯示一個菜單。請注意,我知道如何爲我禁用此功能。我希望能夠禁用所有使用腳本的用戶。

有問題的按鈕是「下一個」/「上一個」按鈕,我使用它們的輸入類型的圖像,但同樣發生在「a」。

回答

4

它turended了,我需要這樣的:

/** 
    Disable text selection by Chris Barr, of chris-barr.com 
*/ 
$.fn.disableTextSelect = function() { 
    return this.each(function(){ 
     if($.browser.mozilla){//Firefox 
      $(this).css('MozUserSelect','none'); 
     }else if($.browser.msie){//IE 
      $(this).bind('selectstart',function(){return false;}); 
     }else{//Opera, etc. 
      $(this).mousedown(function(){return false;}); 
     } 
    }); 
} 

然後我可以在我的按鈕元素這樣的禁用文本選擇:

$(function(){ $('input[type=image]').disableTextSelect(); }); 

現在我可以點擊按鈕快速地獄和一切正常:-)。

0

JavaScript會爲你做到這一點。

DOMElement.ondblclick = (function() {return false;})(); 
+0

不,不起作用:/。 – Nux

+0

它是否上傳到任何地方,以便我可以玩一玩? –

+0

您可以在頁面上使用alt屬性創建輸入類型圖像,並快速點擊幾次。這在Opera當然要做,以檢查我正在談論的行爲。 – Nux

1

你不能有附加在相同的元素,因爲當你dblclick這兩個事件都將被觸發clickdblclick事件處理程序。爲了使它工作,幾乎沒有工作。

這可以幫助你

Need to cancel click/mouseup events when double-click event detected

你的問題看有一個簡單的解決方案。在單擊事件處理程序中,一旦單擊事件處理程序,就會設置禁用的屬性或某個類名稱(禁用)。在執行代碼之前在處理程序中檢查此屬性或類名稱。如果它存在,那麼不要做任何事情。在某段時間刪除這個分類或類名稱後。試試這個

$("selector").click(function(){ 
    var $this = $(this); 
    if(!$this.hasClass("disabled")){ 


     //Do you stuff here 


     $this.addClass("disabled"); 

     setTimeout(function(){ 
     $this.removeClass("disabled"); 
     }, 200); 

    } 
});