`
zhouyrt
  • 浏览: 1173401 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

读jq之七(判断点击了鼠标哪个键)

阅读更多

jQuery丢弃了标准的 button 属性采用which,这有点让人费解。

which 是Firefox引入的,IE不支持。which的本意是获取键盘的键值(keyCode)。

jQuery中的which即可以是键盘的键值,也可以是鼠标的键值。
即当判断用户按下键盘的哪个键时可以使用which,当判断用户按下鼠标的哪个键时也可以用which。它一举两用了。

见jQuery1.4.4源码

// Add which for key events
if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
	event.which = event.charCode != null ? event.charCode : event.keyCode;
}

// Add which for click: 1 === left; 2 === middle; 3 === right
// Note: button is not normalized, so don't use it
if ( !event.which && event.button !== undefined ) {
	event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
}
 

标准的button采用0,1,2表示鼠标的左,中,右键。jQuery的which则使用用1,2,3。

还有一点让人不爽的是jQuery文档 event.which 中并没有提到which可以表示鼠标按键值,只提到了表示键盘按键值。

源码中的注释也让人误解。

jq1.4.4源码 写道
// Add which for click: 1 === left; 2 === middle; 3 === right

 


注意这里说的是click ,很容易让人使用click 事件,但实际上click事件中获取是错误的。

下面就用 click 事件试试:

 

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="jquery-1.4.4.js"></script>
<script type="text/javascript">
	$(document).click(function(e){
		alert(e.which);
	})	

</script>
</head>
<body>
</body>
</html>
 

使用 click 事件,响应函数中直接alert出e.which。我们分别点击左,中,右键测试。

 

测试结果
IE6/7/8 IE9beta Firefox Chrome Safari Opera
点击左键 0 1 1 1 1(不停弹出alert) 1
点击中键 不响应 1 2 不响应 2(不停弹出alert) 不响应
点击右键 仅弹出右键菜单 仅弹出右键菜单 仅弹出右键菜单 仅弹出右键菜单 仅弹出右键菜单 仅弹出右键菜单

 

 

可以看到使用 click 事件并不能按照jQuery设想的那样左,中,右键对应的1,2,3值。各浏览器下均不一致,且右键根本获取不到,Safari中还不停的弹出alert。

 

因此,应该使用 mousedown / mouseup 事件则达到jQuery的设想。jQuery的注释误导了人。

 

此外即使使用 mousedown / mouseup 事件,Opera中也无法获取中键的值。Opera的恶心做法令jQuery也无能为力。

 

这一点见 各浏览器中鼠标按键值的差异 。

 

 

 

 

分享到:
评论
1 楼 fm_974 2010-12-09  
瀏覽器的差異真讓人無奈。。。

相关推荐

    JQ 判断鼠标向上滚动并浮动导航

    标题中的“JQ 判断鼠标向上滚动并浮动导航”指的是使用jQuery库来实现一个功能,即当用户在网页上向上滚动时,导航栏会固定在屏幕顶部,这种效果通常被称为“固定顶栏”或“粘性导航”。这个功能在现代网页设计中...

    JQ鼠标滚轮事件

    其中,“JQ鼠标滚轮事件”是jQuery提供的一种方便的方式来监听和处理用户的鼠标滚轮动作。这个功能允许开发者在用户滚动鼠标滚轮时执行特定的代码,为网页添加更丰富的交互性。 首先,我们来理解一下鼠标滚轮事件的...

    鼠标点击弹窗2_jq效果_

    在IT行业中,jQuery(通常简称为jq)是一种广泛使用的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。本话题主要围绕"鼠标点击弹窗"的jQuery效果展开,这是一个常见的用户界面...

    五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星

    五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星 五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星 五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星 五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 ...

    鼠标点击后保留样式同鼠标经过样式页面代码

    "鼠标点击后保留样式同鼠标经过样式页面代码"这个主题关注的是如何通过JavaScript或CSS技术来实现一种效果,即当用户点击一个元素后,该元素的样式会保持在鼠标悬停时的状态。这种效果常见于导航菜单、按钮或其他...

    jq实现图片跟着鼠标走

    在IT行业中,JavaScript库jQuery(简称jq)是前端开发中常用的一个工具,它极大地简化了DOM操作、事件处理以及动画效果。本示例探讨的是如何使用jQuery实现一个常见且有趣的交互功能:当用户将鼠标移动到商品图片上...

    jq无缝轮播 鼠标移入停止,移出滚动.zip

    【标题】"jq无缝轮播 鼠标移入停止,移出滚动.zip"涉及到的是网页设计中的一个常见功能——使用HTML和jQuery实现的无缝轮播图效果,它具有交互性,即当鼠标移入轮播图时停止自动滚动,鼠标移出时恢复滚动。...

    jq鼠标滚动视差效果.zip

    【标题】"jq鼠标滚动视差效果.zip"所涉及的知识点主要集中在JavaScript(JS)特效的实现,特别是鼠标滚动事件的应用以及视差滚动效果。视差滚动是一种网页设计技术,通过让不同背景元素以不同速度移动,营造出深度感...

    jQ跟CSS3鼠标点击按钮加载特效.zip

    在IT领域,网页交互设计是提升用户体验的重要环节,而"jQ跟CSS3鼠标点击按钮加载特效"就是这种设计的一个实例。此压缩包文件包含了利用jQuery库和CSS3技术实现的一种创新的表单提交按钮交互效果,使得用户在点击按钮...

    jq实现鼠标按下移动轴.rar

    在本项目中,“jq实现鼠标按下移动轴.rar”是一个压缩包,其中包含了一个名为“index7.html”的文件,主要用于利用jQuery库实现一个交互式的功能,即用户可以通过鼠标按住并移动来调整某个元素的位置,同时限制这个...

    JQ 鼠标选中内容松开后弹窗

    标题“JQ 鼠标选中内容松开后弹窗”所指的,是使用JavaScript库jQuery(简称JQ)实现的一种交互功能,即当用户在页面上选择一段文本后,一旦鼠标松开,就会触发一个弹窗显示选定的内容。这种功能常用于提供额外信息...

    JQ 鼠标事件

    **JQ 鼠标事件详解** 在前端开发中,jQuery(简称JQ)库以其简洁易用的API,使得JavaScript编程变得更加简单。鼠标事件是用户与网页交互时常见的触发事件,jQuery对这些事件提供了丰富的支持。本篇将详细介绍jQuery...

    JQ 判断链接的内容

    NULL 博文链接:https://onestopweb.iteye.com/blog/2405383

    jq实现点击图片弹出大图

    在网页设计中,jQuery(通常简称为jq)是一种广泛使用的JavaScript库,它简化了DOM操作、事件处理和动画效果。本教程将详细讲解如何使用jQuery实现点击图片后弹出大图的功能,这是一个常见的交互设计需求,能提升...

    JQ鼠标经过标题向上弹出特效.zip

    在本项目中,我们关注的是一个使用jQuery和CSS3实现的动态效果,即"JQ鼠标经过标题向上弹出特效.zip"。这个特效主要用于增强网页的互动性,当用户将鼠标悬停在特定标题上时,会有一个图像或信息框自下而上弹出,提供...

    jq+js限制鼠标右键粘贴

    本文将深入探讨如何使用jq和js限制鼠标右键粘贴功能以及如何阻止鼠标拖拽操作,同时还会讲解与之相关的事件绑定技巧。 ### 一、限制鼠标右键粘贴 #### 1.1 理解需求背景 在某些应用场景下,如在线考试系统、代码...

    JQ 点击自动增加

    jQuery 点击按钮自动增加,和减少.

    Jq 点击滚动

    标题中的“Jq 点击滚动”指的是利用jQuery实现的一种交互效果,即当用户点击按钮时,图片会进行横向滚动。这种效果在网页设计中常见于轮播图、产品展示等场景,可以增强用户体验,使页面更具动态感。 描述中的...

    图片查看 -jq插件

    本文将深入探讨“图片查看 - jq插件”这一主题,重点关注如何使用jQuery来实现图片的单图查看、多图查看、旋转和放大缩小功能。 首先,我们来看“jQueryViewer”这个文件名,这很可能是一个基于jQuery的图片查看器...

    鼠标滑过 自动播放jQ焦点图.zip

    "鼠标滑过 自动播放jQ焦点图.zip"是一个jQuery插件,专为实现这种功能而设计。这个插件能够使全屏的幻灯片在用户鼠标悬停时自动播放,并带有索引小按钮供用户手动切换图片。下面我们将详细探讨相关的知识点: 1. **...

Global site tag (gtag.js) - Google Analytics