我需要在单击时执行一个功能,在双击时执行其他功能。我面临的问题是由于这样的事实,即我们必须先单击两次才能发生双击事件。我想,只要我们有双击功能,就只能执行双击功能,而不能执行单击功能。到目前为止,以下是我已经完成的操作。请提出是否有更好的方法,因为下面的代码并不总是能正常工作。
的HTML
<div class='box'>
JS:
var dblclick = false;
//single click function
$('div.box').on('click',function(){
setTimeout(function(){
if(!dblclick){
console.log('singleClick');
}
},200);
});
//resetting double click flag
$('div.box').on('click',function(){
setTimeout(function(){
dblclick = false;
},400);
});
//double click function
$('div.box').on('dblclick',function(){
dblclick = true;
console.log('doubleClick')
});
CSS:
div.box {
height: 100px;
width: 100px;
border: 1px solid black;
}
我认为您可以通过一个超时轻松完成此操作,如下所示:
// where "selector" is your html element selector
var element = $("selector"),
single_click_timeout;
function clicked(e) {
single_click_timeout = setTimeout(function() {
// do something for a SINGLE click
}, 400);
}
function dblclicked(e) {
// stop the single click function
clearTimeout(single_click_timeout);
// do something for a DOUBLE click
}
element.on("click", clicked);
element.on("dblclick", dblclicked);
这里的技巧是为该setTimeout
功能设置正确的时间。显然,用户不会以两次间隔1秒的间隔执行双击,而不会以0.01秒的间隔进行双击。因此,现在您必须尝试为双击选择正确的毫秒数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句