jquery中取消和绑定hover事件的实现代码


Posted in Javascript onJune 02, 2016

在网页设计中,我们经常使用jquery去响应鼠标的hover事件,和mouseover和mouseout事件有相同的效果,但是这其中其中如何使用bind去绑定hover方法呢?如何用unbind取消绑定的事件呢?

一、如何绑定hover事件

先看以下代码,假设我们给a标签绑定一个click和hover事件:

$(document).ready(function(){
  $('a').bind({
    hover: function(e) {
      // Hover event handler
      alert("hover");
    },
    click: function(e) {
      // Click event handler
      alert("click");
    }
  });
});

当点击a标签的时候,奇怪的事情发生了,其中绑定的hover事件完全没有反应,绑定的click事件却可以正常响应。

但是如果换一种写法,比如:

$("a").hover(function(){
  alert('mouseover');
}, function(){
  alert('mouseout');
})

这段代码就可以正常的运行,难道bind不能绑定hover?

其实不是,应该使用 mouseenter 和 mouseleave 这两个事件来代替,(这也是 .hover() 函数中使用的事件) 所以完全可以直接像这样来引用:

$(document).ready(function(){
  $('a').bind({
    mouseenter: function(e) {
      // Hover event handler
      alert("mouseover");
    },
    mouseleave: function(e) {
      // Hover event handler
      alert("mouseout");
    },
    click: function(e) {
      // Click event handler
      alert("click");
    }
  });
});

因为.hover()是jQuery自己定义的事件,是为了方便用户绑定调用mouseenter和mouseleave事件而已,它并非一个真正的事件,所以当然不能当做.bind()中的事件参数来调用。

二、如何取消hover事件

大家都知道,可以使用unbind函数去取消绑定的事件,但是只能取消通过bind绑定的事件,jquery中的hover事件是比较特殊的,如果通过这种方式去绑定的事件,则无法取消。

$("a").hover(function(){
  alert('mouseover');
}, function(){
  alert('mouseout');
})

取消绑定的hover事件的正确方式:

$('a').unbind('mouseenter').unbind('mouseleave');

三、总结

其实,这些问题可以去参看jquery官方的说明文档,只是很少有人去看过,网上的大多数教程只是讲解如何去使用这个方法,达到目的即止,并没有深入的了解为什么这么写?

如果你有什么疑惑,欢迎评论留言。

以上这篇jquery中取消和绑定hover事件的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js获取时间(本周、本季度、本月..)
Nov 22 Javascript
jQuery实现自动滚动到页面顶端的方法
May 22 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
Jul 18 Javascript
JS实现禁止鼠标右键的功能
Oct 15 Javascript
作为老司机使用 React 总结的 11 个经验教训
Apr 08 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
Jan 11 Javascript
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
Nov 01 Javascript
vue-router重定向和路由别名的使用讲解
Jan 19 Javascript
vue实现多条件和模糊搜索功能
May 28 Javascript
详解Jest结合Vue-test-utils使用的初步实践
Jun 27 Javascript
vue组件中传值EventBus的使用及注意事项说明
Nov 16 Javascript
深入理解jQuery之事件移除
Jun 02 #Javascript
深入理解JQuery循环绑定事件
Jun 02 #Javascript
JQuery在循环中绑定事件的问题详解
Jun 02 #Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 #Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
Jun 02 #Javascript
JS从一组数据中找到指定的单条数据的方法
Jun 02 #Javascript
jquery使用on绑定a标签无效 只能用live解决
Jun 02 #Javascript
You might like
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
PHP中文件上传的一个问题
2010/09/04 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
浅谈javascript的数据类型检测
2010/07/10 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
nodejs处理tcp连接的核心流程
2021/02/26 NodeJs
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
通信生自我鉴定
2014/01/18 职场文书
函授大学生自我鉴定
2014/02/05 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
党的群众路线教育实践活动对照检查剖析材料
2014/10/09 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL
mysql sql常用语句大全
2022/06/21 MySQL
微信小程序实现轮播图指示器
2022/06/25 Javascript