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也无能为力。
这一点见 各浏览器中鼠标按键值的差异 。
分享到:
相关推荐
标题中的“JQ 判断鼠标向上滚动并浮动导航”指的是使用jQuery库来实现一个功能,即当用户在网页上向上滚动时,导航栏会固定在屏幕顶部,这种效果通常被称为“固定顶栏”或“粘性导航”。这个功能在现代网页设计中...
其中,“JQ鼠标滚轮事件”是jQuery提供的一种方便的方式来监听和处理用户的鼠标滚轮动作。这个功能允许开发者在用户滚动鼠标滚轮时执行特定的代码,为网页添加更丰富的交互性。 首先,我们来理解一下鼠标滚轮事件的...
在IT行业中,jQuery(通常简称为jq)是一种广泛使用的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画制作以及Ajax交互。本话题主要围绕"鼠标点击弹窗"的jQuery效果展开,这是一个常见的用户界面...
五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星 五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星 五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星 五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 ...
"鼠标点击后保留样式同鼠标经过样式页面代码"这个主题关注的是如何通过JavaScript或CSS技术来实现一种效果,即当用户点击一个元素后,该元素的样式会保持在鼠标悬停时的状态。这种效果常见于导航菜单、按钮或其他...
在IT行业中,JavaScript库jQuery(简称jq)是前端开发中常用的一个工具,它极大地简化了DOM操作、事件处理以及动画效果。本示例探讨的是如何使用jQuery实现一个常见且有趣的交互功能:当用户将鼠标移动到商品图片上...
【标题】"jq无缝轮播 鼠标移入停止,移出滚动.zip"涉及到的是网页设计中的一个常见功能——使用HTML和jQuery实现的无缝轮播图效果,它具有交互性,即当鼠标移入轮播图时停止自动滚动,鼠标移出时恢复滚动。...
【标题】"jq鼠标滚动视差效果.zip"所涉及的知识点主要集中在JavaScript(JS)特效的实现,特别是鼠标滚动事件的应用以及视差滚动效果。视差滚动是一种网页设计技术,通过让不同背景元素以不同速度移动,营造出深度感...
在IT领域,网页交互设计是提升用户体验的重要环节,而"jQ跟CSS3鼠标点击按钮加载特效"就是这种设计的一个实例。此压缩包文件包含了利用jQuery库和CSS3技术实现的一种创新的表单提交按钮交互效果,使得用户在点击按钮...
在本项目中,“jq实现鼠标按下移动轴.rar”是一个压缩包,其中包含了一个名为“index7.html”的文件,主要用于利用jQuery库实现一个交互式的功能,即用户可以通过鼠标按住并移动来调整某个元素的位置,同时限制这个...
标题“JQ 鼠标选中内容松开后弹窗”所指的,是使用JavaScript库jQuery(简称JQ)实现的一种交互功能,即当用户在页面上选择一段文本后,一旦鼠标松开,就会触发一个弹窗显示选定的内容。这种功能常用于提供额外信息...
**JQ 鼠标事件详解** 在前端开发中,jQuery(简称JQ)库以其简洁易用的API,使得JavaScript编程变得更加简单。鼠标事件是用户与网页交互时常见的触发事件,jQuery对这些事件提供了丰富的支持。本篇将详细介绍jQuery...
NULL 博文链接:https://onestopweb.iteye.com/blog/2405383
在网页设计中,jQuery(通常简称为jq)是一种广泛使用的JavaScript库,它简化了DOM操作、事件处理和动画效果。本教程将详细讲解如何使用jQuery实现点击图片后弹出大图的功能,这是一个常见的交互设计需求,能提升...
在本项目中,我们关注的是一个使用jQuery和CSS3实现的动态效果,即"JQ鼠标经过标题向上弹出特效.zip"。这个特效主要用于增强网页的互动性,当用户将鼠标悬停在特定标题上时,会有一个图像或信息框自下而上弹出,提供...
本文将深入探讨如何使用jq和js限制鼠标右键粘贴功能以及如何阻止鼠标拖拽操作,同时还会讲解与之相关的事件绑定技巧。 ### 一、限制鼠标右键粘贴 #### 1.1 理解需求背景 在某些应用场景下,如在线考试系统、代码...
jQuery 点击按钮自动增加,和减少.
标题中的“Jq 点击滚动”指的是利用jQuery实现的一种交互效果,即当用户点击按钮时,图片会进行横向滚动。这种效果在网页设计中常见于轮播图、产品展示等场景,可以增强用户体验,使页面更具动态感。 描述中的...
本文将深入探讨“图片查看 - jq插件”这一主题,重点关注如何使用jQuery来实现图片的单图查看、多图查看、旋转和放大缩小功能。 首先,我们来看“jQueryViewer”这个文件名,这很可能是一个基于jQuery的图片查看器...
"鼠标滑过 自动播放jQ焦点图.zip"是一个jQuery插件,专为实现这种功能而设计。这个插件能够使全屏的幻灯片在用户鼠标悬停时自动播放,并带有索引小按钮供用户手动切换图片。下面我们将详细探讨相关的知识点: 1. **...