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 相关文章推荐
JavaScript this 深入理解
Jul 30 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
Jun 23 Javascript
深入分析js的冒泡事件
Dec 05 Javascript
jQuery基础语法实例入门
Dec 23 Javascript
JS动态加载当前时间的方法
Feb 09 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
May 19 Javascript
jquery模拟多级复选框效果的简单实例
Jun 08 Javascript
基于JS实现的随机数字抽签实例
Dec 08 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
Sep 27 Javascript
微信小程序封装自定义弹窗的实现代码
May 08 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
改进的IP计数器
2006/10/09 PHP
WINXP下apache+php4+mysql
2006/11/25 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
JavaScript两种跨域技术全面介绍
2014/04/16 Javascript
nodejs文件操作模块FS(File System)常用函数简明总结
2014/06/05 NodeJs
javascript生成不重复的随机数
2015/07/17 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
Python获取脚本所在目录的正确方法
2014/04/15 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
2016/03/14 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
实例讲解Python爬取网页数据
2018/07/08 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
餐饮业会计岗位职责
2013/12/19 职场文书
房产销售经理职责
2013/12/20 职场文书
运动会广播稿50字
2014/01/26 职场文书
大学生军训自我鉴定
2014/02/12 职场文书