dblclick无法按预期工作

时间:2013-05-26 02:20:58

标签: javascript jquery

II在这里有一些代码http://jsfiddle.net/ggHwH/,每次按下UP按钮时,框边框增加1px,每按一次DOWN按钮,边框减少1px。现在我想感觉双击向下按钮,并将边框立即减少到0.我遇到的问题是,如果你试图一次点击边框一个px,你可以' t帮助但触发双击,即使您单击向下按钮的速度不超过每秒约一次。似乎我应该在不到250ms的时间内完成两次点击以触发双击。有谁知道发生了什么事?

感谢。

   $('#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 个答案:

答案 0 :(得分:3)

dblclickclick混合在一起并不是一个好的实践。

但是,对于您的问题,您可以创建自己"拥有" 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/