深入学习jQuery鼠标事件

前面的话

  鼠标事件是DOM事件中最常用的事件,jQuery对鼠标事件进行了封装和扩展。本文将详细介绍jQuery鼠标事件

 

类型

  鼠标事件共10类,包括click、contextmenu、dblclick、mousedown、mouseup、mousemove、mouseover、mouseout、mouseenter和mouseleave

click         当用户按下并释放鼠标按键或其他方式“激活”元素时触发
contextmenu   可以取消的事件,当上下文菜单即将出现时触发。当前浏览器在鼠标右击时显示上下文菜单
dblclick      当用户双击鼠标时触发
mousedown     当用户按下鼠标按键时触发
mouseup       当用户释放鼠标按键时触发
mousemove     当用户移动鼠标时触发
mouseover     当鼠标进入元素时触发
mouseout      当鼠标离开元素时触发
mouseenter    类似mouseover,但不冒泡
mouseleave    类似mouseout,但不冒泡

 

写法

  以上10类鼠标事件,都有对应的写法。下面以click()事件为例,来说明鼠标事件的写法

【1】click(handler(eventObject))

  click()事件是bind()事件的简写形式,可以接受一个事件处理函数作为参数

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;border:1px solid black"></div>
<script>
$('#box').click(function(){
$(this).css('background','lightblue')
})
</script>

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m1.html" frameborder="0" width="320" height="240">

【2】click([eventData],handler(eventObject))

  click()事件可以接受两个参数,第一个参数传递数据,第二个参数是处理函数

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;border:1px solid black"></div>
<script>
$('#box').click(123,function(event){
alert(event.data);
})
</script>    

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m2.html" frameborder="0" width="320" height="240">

【3】click()

  click()事件不带参数时,变成click()方法,是trigger('click')的简写形式

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<button id="btn1">按钮一</button>
<button id="btn2">按钮二</button>
<script>
$('#btn1').on('click',function(){
alert(1);
});
$('#btn2').on('click',function(){
$('#btn1').click();
});
</script>

style="width: 100%; height: 40px;" src="https://demo.xiaohuochai.site/jquery/mouse/m3.html" frameborder="0" width="320" height="240">

合成事件

  jQuery事件对鼠标事件进行了扩展,自定义了两个合成事件——hover()和toggle()

  [注意]toggle()事件已经在jQuery1.8版本删除

hover()

  hover(enter,leave)事件用于模拟光标悬停事件。鼠标移入时,触发第一个函数参数;鼠标移出时,触发第二个函数参数

  hover()事件实际上是mouseenter事件和mouseleave事件的集合

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;border:1px solid black"></div>
<script>
$('#box').on('mouseenter',function(event){
$(this).css('background-color','lightblue');
})
$('#box').on('mouseleave',function(event){
$(this).css('background-color','transparent');
})
</script>

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m4.html" frameborder="0" width="320" height="240">

  用hover()事件实现如下

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;border:1px solid black"></div>
<script>
$('#box').hover(function(){
$(this).css('background-color','lightblue');
},function(){
$(this).css('background-color','transparent');
})
</script>

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m5.html" frameborder="0" width="320" height="240">

  当hover()事件只有一个参数时,该参数为mouseenter和mouseleave事件共同的函数

<style>
.active{background-color:lightblue;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;border:1px solid black"></div>
<script>
$('#box').hover(function(){
$(this).toggleClass('active')
})
</script>

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m6.html" frameborder="0" width="320" height="240">

toggle()[已删除]

  toggle()事件用于模拟鼠标连续单击事件。第1次单击,触发第1个函数参数;第2次单击,触发第2个函数函数;如果有更多函数,则依次触发,直到最后一个。随后的每次单击都重复对这几个函数轮番调用

 

鼠标按键

  事件对象event的which属性用于区分哪个键被按下,敲击鼠标左键which的值是1,敲击鼠标中键which的值是2,敲击鼠标右键which的值是3

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;border:1px solid black"></div>
<script>
$('#box').mousedown(function(event){
alert(event.which)
})
</script>

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m7.html" frameborder="0" width="320" height="240">

修改键

  在按下鼠标时键盘上的某些键的状态可以影响到所要采取的操作,这些修改键就是Shift、Ctrl、Alt和Meta(在Windows键盘中是Windows键,在苹果机中是Cmd键),它们经常被用来修改鼠标事件的行为

  jQuery参照DOM规定了4个属性,表示这些修改键的状态:shiftKey、ctrlKey、altKey和metaKey。这些属性中包含的都是布尔值,如果相应的键被按下了,则值为true;否则值为false

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;border:1px solid black"></div>
<script>
$('#box').click(function(event){
$('#box').html();
if(event.shiftKey){$('#box').html('shiftKey;') }
if(event.ctrlKey){$('#box').html('ctrlKey;') }
if(event.altKey){$('#box').html('altKey;') }
if(event.metaKey){$('#box').html('metaKey;') }
})
</script>

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m8.html" frameborder="0" width="320" height="240">

坐标位置

  关于坐标位置,DOM事件对象提供了clientX/Y、pageX/Y、screenX/Y、x/y、offsetX/Y、layerX/Y这6对信息,但各浏览器实现情况差异很大

  jQuery关于坐标位置,提供了clientX/Y、offsetX/Y、screenX/Y、pageX/Y这四对信息

clientX/Y

  clientX/Y表示鼠标指针在可视区域中的水平和垂直坐标

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:200px;border:1px solid black"></div>
<script>
$('#box').mousemove(function(event){
$('#box').html(function(index,oldHtml){
return 'clientX:'   event.clientX  ';clientY:' event.clientY
});
})
</script>

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m9.html" frameborder="0" width="320" height="240">

offsetX/Y

  offsetX/Y表示相对于定位父级的水平和垂直坐标

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:400px;border:1px solid black"></div>
<script>
$('#box').mousemove(function(event){
$('#box').html(function(index,oldHtml){
return 'clientX:'   event.clientX  ';clientY:' event.clientY   'offsetX:'   event.offsetX  ';offsetY:' event.offsetY
});
})
</script>

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m10.html" frameborder="0" width="320" height="240">

screenX/Y

  screenX/Y表示鼠标指针相对于屏幕的水平和垂直坐标

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:30px;width:400px;border:1px solid black"></div>
<script>
$('#box').mousemove(function(event){
$('#box').html(function(index,oldHtml){
return 'clientX:'   event.clientX  ';clientY:' event.clientY   'screenX:'   event.screenX  ';screenY:' event.screenY
});
})
</script>

style="width: 100%; height: 50px;" src="https://demo.xiaohuochai.site/jquery/mouse/m11.html" frameborder="0" width="320" height="240">

pageX/Y

  pageX/Y表示相对于页面的水平和垂直坐标,它与clientX/clientY的区别是不随滚动条的位置变化

<body style="height:2000px;">
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="box" style="height:100px;width:300px;background:pink;"></div>
<div id="result"></div>
<script>
$('#box').mousemove(function(event){
$('#result').html(function(index,oldHtml){
return 'clientX:'   event.clientX  ';clientY:' event.clientY   'pageX:'   event.pageX  ';pageY:' event.pageY
});
})
</script>
</body> 

style="width: 100%; height: 200px;" src="https://demo.xiaohuochai.site/jquery/mouse/m12.html" frameborder="0" width="320" height="240">


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能自动PPR更改事件策略

ADF开发人员普遍认为&#xff0c;将迭代器绑定更改事件策略设置为ppr在性能方面不是一件好事&#xff0c;因为此策略会强制框架刷新每个请求上绑定到此迭代器的所有属性绑定。 这不是真的&#xff01; 框架仅刷新在请求期间已更改的属性和依赖于已更改属性的属性。 让我们考虑…

[转]国际化: 理解Java平台上的Locale

From:http://jatula.javaeye.com/blog/183680 语言和地理环境对我们的文化产生重要影响.我们同他人之间的交流以及生活中的事件都发生在语言和地理环境所产生的一个系统里.由于语言和环境的不同,以至 需要我们来制定一个适合的方式来达到向他人表述我们自己或者我们的想法的目的…

深入学习jQuery描述文本内容的3个方法

前面的话 在javascript中&#xff0c;描述元素内容有5个属性&#xff0c;分别是innerHTML、outerHTML、innerText、outerText和textContent。这5个属性各自有各自的功能&#xff0c;且兼容性不同。jQuery针对这样的处理提供了3个便捷的方法&#xff0c;分别是&#xff1a;html(…

luoguP4551最长异或路径

P4551最长异或路径 链接 luogu 思路 从\(1\)开始\(dfs\)求出\(xor\)路径。然后根据性质\(x\)到\(y\)的\(xor\)路径就是\(xo[x]^xo[y]\) 代码 #include <bits/stdc.h> using namespace std; const int _1e57; int xo[_],w[_],ans-1,num0; struct node {int v,q,nxt; }e[_&…

谈一谈我的996 (随笔)

说一说996这个最近技术圈比较热门的话题。 什么是996&#xff0c;早九晚九一周上班6天。 看朋友圈&#xff0c;有个朋友说自己没有经历过什么是996&#xff0c;感觉自己是个假的程序员&#xff0c;是不是程序员就应该加班呢&#xff0c;是不是已经下意识&#xff0c;大众性的认…

装饰器设计模式的应用

嗨&#xff0c;您好&#xff01; 今天&#xff0c;我将展示装饰设计模式的实际应用。 装饰器设计模式是一种广泛使用的设计模式&#xff0c;同时在运行期间处理图形&#xff0c;树木和动态更改。 如果您正在寻找或尝试进行递归&#xff0c;这也是一个不错的选择。 我喜欢它。…

ubuntu postgresql 的安装

本人亲测&#xff0c;在ubuntu9.10上安装的postgresql 8.3版本。郁闷了好几天&#xff0c;终于ok了。sudo apt-get install postgresql-8.3 postgresql-client-8.3 postgresql-contrib-8.3然后在/etc/profile里加上export POSTGRES_HOME/usr/lib/postgresql/8.3export PGLIB$PO…

loj2090. 「ZJOI2016」旅行者

loj2090. 「ZJOI2016」旅行者 链接 loj 思路 \((l,mid)(mid1,r)\).考虑跨过mid的贡献。 假设选的中间那条线的点为gzy,贡献为\(dis(x,gzy)dis(gzy,y)\) 那就计算n遍最短路,一次分治为\(n^2mlog{nm}\) 设Sn*m.矩阵的长度是不定的&#xff0c;每次取最长的边进行分治是最好的&…

利用select实现年月日三级联动的日期选择效果

前面的话 关于select控件&#xff0c;可能年月日三级联动的日期选择效果是最常见的应用了。本文是选择框脚本的实践&#xff0c;下面将对日期选择效果进行详细介绍 演示 style"width: 100%; height: 80px;" src"https://demo.xiaohuochai.site/js/date/d2.html&…

ubuntu资料

1、VNC实现Windows远程访问Ubuntu 16.04&#xff08;无需安装第三方桌面,直接使用自带远程工具&#xff09; https://www.cnblogs.com/xuliangxing/p/7642650.html 转载于:https://www.cnblogs.com/little-kwy/p/10761865.html

守护基于JVM的应用程序

部署体系结构设计是任何定制服务器端应用程序开发项目的重要组成部分。 由于其重要性&#xff0c;部署架构设计应尽早开始&#xff0c;并与其他开发活动一起进行。 部署体系结构设计的复杂性取决于许多方面&#xff0c;包括所提供服务的可伸缩性和可用性目标&#xff0c;部署过…

开篇

进入软件行业已有数日&#xff0c;但终归还算是新手。 对程序员有点好奇&#xff0c;所以选择这个职业&#xff0c;从现在开始希望能够记下自己从业当中的点点滴滴&#xff0c;同时希望自己也能够一直坚持下去。转载于:https://www.cnblogs.com/gaser/archive/2009/11/22/16082…

构造函数 基本使用

相关知识点&#xff1a; 构造函数、原型对象、实例对象 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta h…

2019CCPC网络预选赛 八道签到题题解

目录 2019中国大学生程序设计竞赛&#xff08;CCPC&#xff09; - 网络选拔赛6702 &6703 array6704 K-th occurrence6705 path6706 huntian oy6707 Shuffle Card6708 Windows Of CCPC6709 Fishing Master 2019中国大学生程序设计竞赛&#xff08;CCPC&#xff09; - 网络选…

深入理解表单脚本系列第一篇——表单对象

前面的话 javascript最初的一个应用就是分担服务器处理表单的责任&#xff0c;打破处处依赖服务器的局面。尽管目前的web和javascript已经有了长足的发展&#xff0c;但web表单的变化并不明显。由于web表单没有为许多常见任务提供现成的解决方法&#xff0c;很多开发人员不仅会…

stm32开发问题集锦

1 在flash中跑程序时&#xff0c;能进入中断&#xff0c;但在ram中跑时&#xff0c;进不了中断的原因。看以下的中断配置函数可以知道&#xff0c;要在ram中调试程序&#xff0c;需要定义VECT_TAB_RAM。定义方法a:在Project\Options for taget xxx 的对话框的c/c中定义宏VECT_T…

luoguP4213 【模板】杜教筛(Sum)杜教筛

链接 luogu 思路 为了做hdu来学杜教筛。 杜教筛模板题。 卡常数&#xff0c;我加了register居然跑到不到800ms。 太深了。 代码 // luogu-judger-enable-o2 #include <bits/stdc.h> #define ll long long using namespace std; const int _5000030; int vis[_],pri[_],cn…

深入理解脚本化CSS系列第二篇——查询计算样式

前面的话 元素的渲染结果是多个CSS样式博弈后的最终结果&#xff0c;这也是CSS中的C(cascade)层叠的含义。访问第一篇中的style属性只能获取行间样式&#xff0c;这通常来说&#xff0c;并不是我们想要的结果。本文将详细介绍如何查询计算样式 getComputedStyle() 元素的计算样…

创建自己的Java批注

如果您一直在用Java编程并且使用诸如Spring和Hibernate之类的任何流行框架&#xff0c;那么您应该对使用注释非常熟悉。 当使用现有框架时&#xff0c;其注释通常就足够了。 但是&#xff0c;您是否发现需要创建自己的注释&#xff1f; 不久之前&#xff0c;我找到了一个理由来…

浅谈MAXIMO项目实施(转)

浅谈MAXIMO项目实施工作以来&#xff0c;参与了XX公司的MAXIMO项目实施&#xff0c;妄谈一些工作中的感受和对MAXIMO的理解&#xff0c;欢迎砖头。[b]对MAXIMO的理解[/b]MAXIMO是老外的软件&#xff0c;是J2EE上架起的很成熟的平台级系统&#xff0c;其中融入了老外的管理方式和…