如果用户 double 点击HTML按钮,则会在双击事件侦听器之前调用单个单击事件侦听器。
有没有办法在双击时跳过单击处理(不跳过篮球)?
请记住如果用户不点击双击,我希望能够对单击作出反应!
看看不言自明的sample at jsfiddle.net。
myEventButton.addEventListener(
'click',
function(/*e*/)
{
myClickDiv.innerHTML = 'Clicked.'; // Gets here first on double click.
});
myEventButton.addEventListener(
'dblclick',
function(/*e*/)
{
myDblClickDiv.innerHTML = 'Double clicked.'; // Gets here last on double click.
});
答案 0 :(得分:0)
我不知道是否有正确的方法,但这有效。我们的想法是在点击之间保持一个计时器,你禁止任何点击速度。这意味着双击时,第一次点击将被注册,但第二次点击过快,将被忽略。
当然你可以在一个很好的功能背后抽象出来,但你明白了。
您修改过的代码:
// Added variables to store timers
var minTimeBetweenClicks = 1000;
var lastClickTime = Date.now();
myClearButton.addEventListener(
'click',
function()
{
myClickDiv.innerHTML = '';
myDblClickDiv.innerHTML = '';
});
myEventButton.addEventListener(
'click',
function(/*e*/)
{
// Check the timer before doing anything
if (Date.now() - lastClickTime > minTimeBetweenClicks) {
myClickDiv.innerHTML += ' Clicked.';
lastClickTime = Date.now();
}
});
myEventButton.addEventListener(
'dblclick',
function(/*e*/)
{
myDblClickDiv.innerHTML = 'Double clicked.';
});
PS:我还修改了您的点击代码以添加"点击"按钮,这样你就可以看到双击没有添加两次。