背景分析:

如果用户在一个元素上点击,那么最少三个事件会被触发,事件发生顺序:

1、mousedown,当用户在这个元素上按下鼠标键的时候

2、mouseup,当用户在这个元素上松开鼠标键的时候

3、click,当一个mousedown和一个mouseup都在这个元素上被检测到的时候发生

工作需求:

  在地图上通过鼠标点击添加marker,拖拽地图后,避免点击事件的进入,即拖拽不添加marker。

  分析:如果希望拖拽动作后,不触发点击事件,单纯帮顶click事件是不行的,可以使用mousedown、mousemove、mouseup来描述拖拽和鼠标点击事件。

  mousedown-mousemove-mouseup,为拖拽事件;mousedown-mouseup,为点击事件。

  于是问题细化成,通过flag判断是不是进行了move操作,一旦进行则mouseup中的函数体不执行即可,示意代码如下:

       map.addEventListener("mousedown", function () {
ifDrag = true;
})
map.addEventListener("mousemove", function () {
ifDrag = false;
})
map.addEventListener("mouseup", function (type, evt) {
//判断是否有拖拽动作
if (ifDrag) {
//add marker
showMarkerData(evt.mouseGeoPoint);
}
else {
//no maker
}
})     

  但是,这并不意味着click方法没有触发,如果给map也监听click方法,会发现click在up后也是会触发的,只不过我们不对它执行任何操作,而只使用mouse事件,效果是不影响罢了。  

  map.addEventListener("click",function(type,evt){
    //click
  })
------------------------------------------------

  博主经营一家发饰淘宝店,都是纯手工制作哦,开业冲钻,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!
店名:
  小鱼尼莫手工饰品店
经营:
  发饰、头花、发夹、耳环等(手工制作)
网店:
  http://shop117066935.taobao.com/

---------------------------------------------------------------------

继续正题...

 

参考网页:

  http://tech.cncms.com/sheji/js/41804.html

  http://bbs.9ria.com/thread-140336-1-1.html

  http://www.cnblogs.com/webflash/archive/2010/01/05/1639306.html(当三个事件作用于同一个标签节点element时,尝试使用setTimeout时间函数来区分)

店名:
  小鱼尼莫手工饰品店
经营:
  发饰、头花、发夹、耳环等(手工制作)
网店:
  http://shop117066935.taobao.com/

mousedown\mouseup\click事件关系的更多相关文章

  1. mousedown和click冲突事件

    鼠标事件,一般用button来区分鼠标的按键(DOM3标准规定: click事件只能监听左键, 只能通过mousedown和mouseup来判断鼠标键): 1.鼠标左键 button = 0 2.鼠标 ...

  2. C# •MouseDown •MouseDown •MouseUp 的先后顺序

    鼠标按下事件发生的顺序 MouseDown event. Click event. MouseDownevent. MouseUp event. 可以写个测试,放一个picture控件 private ...

  3. a标签与click的关系

    当点击浏览器a标签的时候,浏览器的默认机制如下: 1.触发a的click事件2.读取href属性的值3.如果是URI则跳转4.如果是javascript代码则执行该代码 下面我们一起来做一个实验: 我 ...

  4. 解决jQuery中dbclick事件触发两次click事件

    首先感谢这位小哥!http://qubernet.blog.163.com/blog/static/1779472842011101505853216/ 太长姿势了. 在jQuery事件绑定中,dbc ...

  5. 快速解决js开发下拉框中blur与click冲突

    在开发中我们会经常遇到blur和click冲突的情况.下面叙述了开发中常遇到的"下拉框"的问题,并提供了两种解决方案. 一.blur和click事件简述 blur事件:当元素失去焦 ...

  6. 移动端的click

    移动端的click 移动端click和touch的关系 搬运 http://segmentfault.com/q/1010000000691822 手指在屏幕上滑动时 各个touch的触发顺序 tou ...

  7. 移动端为何不使用click而模拟tap事件及解决方案

    移动端click会遇到2个问题,click会有200-300ms的延迟,同时click事件的延迟响应,会出现穿透,即点击会触发非当前层的点击事件. 为什么会存在延迟? Google开发者文档中有提到: ...

  8. javaScript事件(九)事件类型之触摸与手势事件

    一.触摸事件 touchstart:当手指触摸屏幕时触发:即使已经有一个手指放在了屏幕上也会触发. touchmove:当手指在屏幕上滑动时连续地触发.在这个世界发生期间,调用preventDefau ...

  9. JS事件类型--1

    滚轮事件其实就是一个mousewheel事件,这个事件跟踪鼠标滚轮,类似Mac的触屏版. 一.客户区坐标位置 鼠标事件都是在浏览器视口的特定位置上发生的.这个位置信息保存在事件对象的clientX和c ...

随机推荐

  1. Blender 界面操作

    1.旋转场景 使用鼠标中间键旋转整个场景.按住Shift键,再操作鼠标中间键则可平移整个场景. 2.数字键盘功能 数字键盘1.3.7,分别控制场景向前.向后.向上显示. 数字键盘5,可以在正射投影(O ...

  2. MLE、MAP、贝叶斯三种估计框架

    三个不同的估计框架. MLE最大似然估计:根据训练数据,选取最优模型,预测.观测值D,training data:先验为P(θ). MAP最大后验估计:后验概率. Bayesian贝叶斯估计:综合模型 ...

  3. 带有logo的二维码

    摘要: 前面介绍了使用javascript生成二维码,但是这样并不能满足我们的需求,我们有时也会看到带有logo的二维码,本文就介绍如何生成带有logo的二维码. 简介: 主要使用了svg的文本和图像 ...

  4. 下拉刷新 上拉更多 支持ListView GridView WebView【转载】

    转载自:http://www.stay4it.com/?p=245 老贴重发,源代码放附件了,需要的下载把. 终于有新货了.昨天改了下,在ListView和GridView加了个返回到顶部的按钮,li ...

  5. CSS3制作美丽的3D表单

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  6. Linux环境下MySQL设置gbk编码

    1 编辑mysql配置文件 vi /etc/my.cnf 2 创建数据库 CREATE DATABASE `XXX` DEFAULT CHARACTER SET gbk COLLATE gbk_chi ...

  7. Extended VM Disk In VirtualBox or VMware (虚拟机磁盘扩容)

    First, Clean VM all snapshot, and poweroff your VM. vmdk: vmware-vdiskmanager -x 16GB myDisk.vmdk vd ...

  8. WebService之JDK中wsimport命令

    1.编写WebService类,使用@WebService注解 package test; import javax.jws.WebService; @WebService public class ...

  9. 【PHP】phpstudy vhosts.conf 配置

    #Listen 876 <VirtualHost *:876> ServerName localhost DocumentRoot "D:\phpStudy\PHPTutoria ...

  10. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 1.什么都没过滤的入门情况

    0x01 背景 首先恭喜Seay法师的力作<代码审计:企业级web代码安全架构>,读了两天后深有感触.想了想自己也做审计有2年了,决定写个PHP代码审计实例教程的系列,希望能够帮助到新人更 ...