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 相关文章推荐
jquery复选框CHECKBOX全选、反选
Aug 30 Javascript
实现连缀调用的map方法(prototype)
Aug 05 Javascript
Javascript 中的类和闭包
Jan 08 Javascript
js滚动条回到顶部的代码
Dec 06 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
Jan 24 Javascript
深入理解Javascript作用域与变量提升
Dec 09 Javascript
JavaScript实现简单的二级导航菜单实例
Apr 15 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
Dec 31 Javascript
JS触摸与手势事件详解
May 09 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
Oct 09 Javascript
vue2 拖动排序 vuedraggable组件的实现
Aug 08 Javascript
Vue 组件注册全解析
Dec 17 Vue.js
深入理解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
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
PHP常用技术文之文件操作和目录操作总结
2014/09/27 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
JS实现的倒计时效果实例(2则实例)
2015/12/23 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
2015/12/30 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
详解Node 定时器
2018/02/26 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
浅谈Python __init__.py的作用
2020/10/28 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
暑期实践思想汇报
2014/01/06 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书