2013-05-26 54 views
0

II在此處有一些代碼http://jsfiddle.net/ggHwH/,每次按下向上按鈕時將框邊框增加1px,並且每次按下向下按鈕時將邊框減少1px。現在,我想感知雙擊向下按鈕,並立即將邊框減少爲0.我遇到的問題是,如果您嘗試向下單擊一次一個邊框的邊框,則可以「即使你點擊向下按鈕的速度不超過每秒約一次,也會觸發雙擊。似乎我應該不得不在兩百五十毫秒內完成兩次點擊才能觸發雙擊。有誰知道發生了什麼事?dblclick按預期工作

謝謝。

$('#up').click (function() { 
     $('#box').css({'border-top-width' : '+=1px', 'borderRightWidth' : '+=1px','borderBottomWidth' : '+=1px','borderLeftWidth' : '+=1px'}); 
    }); 

$('#down').click (function() { 
    $('#box').css({'border-top-width' : '-=1px', 'borderRightWidth' : '-=1px','borderBottomWidth' : '-=1px','borderLeftWidth' : '-=1px'}); 
}); 

$('#down').dblclick (function() { 
    $('#box').css({'border-top-width' : '0px', 'borderRightWidth' : '0px','borderBottomWidth' : '0px','borderLeftWidth' : '0px'}); 
}); 
+1

[「是不可取的綁定處理程序同時觸發'click'和'dblclick'事件,觸發的事件順序因瀏覽器而異,有些事件在'dblclick'之前接收到兩個'click'事件,而其他事件則只有一個。 (點擊之間的最大時間爲d作爲雙擊進行檢測)可能因操作系統和瀏覽器而異,並且通常是用戶可配置的。「](http://api.jquery.com/dblclick/)。所以不要那樣做,除非你充滿仇恨。 –

回答

3

dblclick混合click心不是一個很好的實踐。

但是,對於您的問題,您可以創建您自己的「dblclick」。你只需要加2 VAR:

var isDbl = false; 
var timer = null; 

然後你click功能將設置的250毫秒計時器,並有一個條件:

$('#down').click (function() { 
    clearTimeout(timer) 
    timer = setTimeout(function(){ 
     isDbl = false 
    }, 250) 
    if(isDbl){ 
     $('#box').css({'border-top-width' : '0px', 'borderRightWidth' : '0px','borderBottomWidth' : '0px','borderLeftWidth' : '0px'}); 
     isDbl = false; 
    }else{ 
     $('#box').css({'border-top-width' : '-=1px', 'borderRightWidth' : '-=1px','borderBottomWidth' : '-=1px','borderLeftWidth' : '-=1px'}); 
    isDbl = true 
    } 
}); 

小提琴:http://jsfiddle.net/ggHwH/4/

+0

非常漂亮的卡爾安德烈!感謝您將解決方案放在一起。也許我可以爲你做點小事來換取回報。我衝擊了你的網站,並在頂部注意到「對每一項新技術感興趣的Web開發人員/設計師」我認爲一位英語母語人士期望看到「對每一項新技術感興趣的Web開發人員/設計師」或「感興趣的Web開發人員/設計師所有新技術「。再次感謝你的幫助。 – Steve

+0

啊哈謝謝:)祝你有美好的一天! –