深入学习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>

【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>    

【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>

合成事件

  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>

  用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>

  当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>

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>

修改键

  在按下鼠标时键盘上的某些键的状态可以影响到所要采取的操作,这些修改键就是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>

坐标位置

  关于坐标位置,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>

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>

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>

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> 
时间: 2024-10-24 13:14:36

深入学习jQuery鼠标事件的相关文章

从零开始学习jQuery (五) 事件与事件对象

原文:从零开始学习jQuery (五) 事件与事件对象 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery中的Ajax 从零开始学习jQuery (七) jQuery动画-让页面动起来! 从零开始学习jQuer

JQuery 鼠标事件简介

mouseover事件于用户把鼠标从一个元素移动到另外一个元素上时触发,mouseout事件于用户把鼠标移出一个元素时触发. 下面为你详细介绍下jquery中的鼠标事件: (1):click事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发: $('p').click(function(){ alert('click function is running !'); }); (2):dblclick:dbclick事件在用户完成迅速连续的两次点击之后触发,双击的速度取决于

学习jQuery的事件dblclick

Insus.NET一直以来都是asp.net的开发的,少使用javascript.现在学习asp.net mvc了,jQuery是一个必须掌握的客户端语言. 不用急,慢慢来.一步一步.这篇练习jQuery的事件dblclick. 先在控制器创建一个Action,也就是所说的操作: 有了操作,肯定需要一个视图来支持它: 上面实现的功能,就是用户双击文本框,如果双击到一个空文本框,它会提示用户填写值,如果双击一个已经存有值的文本框,它什么也不做. 演示:

jquery 鼠标事件汇总

鼠标事件是指用户在移动鼠标光标或者点击任意鼠标键时触发的事件,jQuery中封装了基本上所有的鼠标事件包括点击,双击,移动等鼠标事件,下面我们就来看下这些事件的语法和用法 鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的. 1.click事件:点击鼠标左键时触发 $('p').click(function(){}); 示例: $('p').click(function(){ alert('click function is running !'); }); 2.dbclick事件:迅速

jQuery鼠标事件(转)

鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的.(1):click事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发.$('p').click(function(){ alert('click function is running !');});(2):dbclick事件:dbclick事件在用户完成迅速连续的两次点击之后触发,双击的速度取决于操作系统的设置.一般双击事件在页面中不经常使用.$('p').dbclick(function(){ alert('

jQuery鼠标事件汇总

鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的. 1.click事件:点击鼠标左键时触发 $('p').click(function(){}); 示例: $('p').click(function(){ alert('click function is running !'); }); 2.dbclick事件:迅速连续的两次点击时触发 $('p').dbclick(function(){}); 示例: $("button").dblclick(function(){ $(&

GTK进阶学习:鼠标事件

鼠标事件,可以理解为操作鼠标的动作.对于窗口而言,用户操作鼠标,窗口检测到鼠标的操作( 产生一个信号 ),然后去做相应处理( 调用其规定的回调函数 ),即可认为是鼠标事件,还是信号与回调函数的知识点. 信号与回调函数的使用请点击此处. 窗口默认不接收鼠标的操作,需要手动添加让其接收. 设置控件捕获(接收)相应的事件: void gtk_widget_add_events( GtkWidget *widget, gint events ); widget:控件 events:事件类型,它是GdkE

selenium学习:鼠标事件

在WebDriver中鼠标操作的方法封装在ActionChains类中 ActionChains类提供的常用方法: perform():执行所有ActionChains中的存储行为 contextclick() 右击 double_click() 双击 drag_and_drop() 拖动 move_to_element() 鼠标悬停 鼠标右击事件 下面代码中:from selenium.driver import ActionChains  导入提供鼠标操作的ActionChains类 Act

Jquery 鼠标事件解析

1 mouseover与mousemove的区别: mouseover是当鼠标移动到对象时产生,只产生一次,这时如果继续在对象上移动,不会再产生mouseover事件,而是mousemove事件,mousemove事件是当鼠标进入对象后,如果在对象上不断地移动,那么该事件会不断地产生. mouseOver 从父元素进入子元素,从子元素进入父元素都能触发 2 mouseout事件 与mouseover相对,一个是进入,一个是出去.离开子元素同样可以触发父元的mouseout事件 3 mousedo