2012-11-08 49 views
9

在我的骨幹觀炒魷魚,我已經定義了這樣的活動:Backbone.js的 - 無論單擊和雙擊事件的元素

events : { 
    'click .elm' : 'select', 
    'dblclick .elm' : 'toggle' 

}, 

select: function(e){ 
    e.preventDefault(); 
    console.log('single clicked'); 
} 

toggle : function(e){ 
    e.preventDefault(); 
    console.log('double clicked'); 
} 

我已綁定單並雙擊事件監聽器相同的元素.elm 。當我雙擊此元素上,我得到這個輸出:

single clicked single clicked double clicked

嘗試preventDefault()stopImmediatePropagation()並沒有解決不了的問題。

那麼,我怎樣才能防止單擊事件被激發,當我雙擊?

回答

0

嘗試在選擇&切換的末尾添加return false;

6

jQuery documentation特別建議對你在做什麼:

是不可取的處理程序綁定到clickdblclick事件都爲同一個元素。觸發的事件順序因瀏覽器而異,其中一些在dblclick之前接收兩個click事件,而其他事件只有一個。雙擊靈敏度(雙擊檢測到的最大點擊時間)可能因操作系統和瀏覽器而異,並且通常可由用戶配置。

你所看到的正是預期的結果(取決於瀏覽器當然)。解決您的問題的唯一方法是設置計時器並手動區分單擊和雙擊自己;那麼你必須調整計時器的值並檢查各種瀏覽器和操作系統,直到你得到某種假裝在大多數地方工作的東西。

我強烈建議您改爲使用單擊控件和單擊操作。雙擊是非常不友好的時期,我們只會忍受它,因爲我們習慣了。

+0

嗯。然後我必須改變我的應用程序行爲。 – Veera