首页 > 解决方案 > 如何防止在“dblclick”事件之前触发“click”事件

问题描述

我必须处理两个事件,即“click”和“dblclick”,但 click 事件总是在 dblclick 事件之前触发,并且不让 dblclick 事件执行。如何使事件正确执行“点击”和“dblclick”

google.maps.event.addListener(map, 'dblclick', function(event) {
   polygon(map, event.latLng)
 });


 google.maps.event.addListener(map, 'click', function(event) {
   click_events(map, event.latLng)
 });

标签: javascriptfunctiondom-eventsondblclick

解决方案


使用 setTimeout 并维护超时对象,以便您可以在双击时清除它

var timeoutObj;
var timeoutThreshhold = ...; //number of milliseconds to wait for double click

google.maps.event.addListener(map, 'dblclick', function(event) {
   if (timeoutObj) {
     clear timeoutObj;
   }
   polygon(map, event.latLng);
 });


 google.maps.event.addListener(map, 'click', function(event) {
   timeoutObj = setTimeout(function() {
     timeoutObj = null;
     click_events(map, event.latLng);
   }, timeoutThreadhold);
 });

推荐阅读