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鼠标滚轮事件可以响应鼠标滚轮事件,JQ鼠标滚轮事件可以响应鼠标滚轮事件
jq效果,鼠标点击产生弹窗,新手建议参考
五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星 五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星 五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 表情 星星 五种jQuery鼠标移动点击特效 雪花 气泡 蝙蝠 ...
NULL 博文链接:https://onestopweb.iteye.com/blog/2353884
jq鼠标滚动视差效果是一款只需滚动鼠标的滚轮即可变换不同的场景,适合圣诞节日使用。 jq鼠标滚动视差
仿淘宝鼠标经过商品图片,实现图片跟着鼠标走
JQ鼠标经过标题向上弹出特效 JQ鼠标经过标题向上弹出特效 JQ鼠标经过标题向上弹出特效 JQ鼠标经过标题向上弹出特效
html 和 jq 实现的一种无缝轮播,鼠标移入停止,移出滚动。
jQ跟CSS3鼠标点击按钮加载特效是一款jQuery基于css3属性制作表单提交激活按钮,文字加载动画过程特效。
主要用jq实现鼠标按下移动轴,限制移动的范围
jq实现点击图片弹出大图
jq+js限制鼠标右键粘贴、鼠标拖拽
NULL 博文链接:https://onestopweb.iteye.com/blog/2405383
jq鼠标移动特效
JQ鼠标经过标题向上弹出特效是一款基于jquery css3实现的点击左右箭头可移动左右滚动图片特效。
jQuery 点击按钮自动增加,和减少.
点击按钮图片横向滚动JQ 脚本!
很好用的。。。。JQ的图片滚动效果,可以用鼠标点击上一页下一页来控制哦
实现的效果鼠标移到缩略图上会显示该图的大图,并且大图跟随鼠标移动;或是移动到提示文字上,也可以显示图片。并且含有方向判别功能,具体来说就是如果缩略图在页面的左半部分,则大图显示在鼠标的右侧,如果缩略图...
jq眼睛随鼠标移动而旋转是一款带有磁性的jquery鼠标响应式眼睛旋转特效。 jq眼睛随鼠标移动而旋转特效图: