眼前的语句

  鼠标事件举凡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> 

相关文章

网站地图xml地图