jquery提供了许多的事件处理函数,下面对其总结一下,梳理一下知识点,便于记忆和使用。

一、鼠标事件

1. click():鼠标单击事件

$div = $("div")
$div.click(data,function (event) { //点击盒子变蓝$(this).css({"background": "blue",}); console.log(event);
})

$div = $("div") $div.click(data,function (event) { //点击盒子变蓝 $(this).css({ "background": "blue", }); console.log(event); })

  • 参数function:匿名函数有且只有一个默认的参数event,event输出事件相关的信息;不允许有其他的参数,可以不写
  • 参数data:有时候需要传递额外的数据给函数,data可以是一个数组,不需要可以省略

扩展:

//event参数可以获取事件的各种属性,有几个常用

event.target:  获取触发事件的元素$div.click(function (event) {$(event.target).css({"background": "blue",});})event.data: 获取事件传入的参数数据。
event.pageX: 获取鼠标光标点击距离文档左边left的距离;
event.pageY: 获取鼠标光标点击距离文档上边top的距离;event.offsetX: 获取鼠标光标点击距离元素左边left的距离;
event.offssetY: 获取鼠标光标点击距离元素上边top的距离;event.screenX: 获取鼠标光标点击距离屏幕left的距离;
event.screenY: 获取鼠标光标点击距离屏幕top的距离;

 

扩展2:外层加个function函数表示,只有dom结构树全部加载完之后,再执行jquery代码,这样代码可以放在开头或任意位置了

以下是缩写,非省略写法是:

$(document.ready(function(){}))   --->   $(function(){})

<body><script>$(function () {$div.click(data,function (event) { //点击盒子变蓝$(this).css({"background": "blue",});console.log(event);})})</script><div>1111</div>
</body>

2. dblclick():鼠标双击事件

$div = $("div")
$div.dblclick()(function (event) { //双击盒子变蓝$(this).css({"background": "blue",});
})

  • 参数和click的用法完全一样,event同样可以获取众多的属性。

3. 鼠标进入和离开(进入子元素也触发)

  • mouseover():进入
  • mouseout():离开
$div = $("div")
$div.mouseover(function (event) { $(this).css({"background": "blue",});
})
$div.mouseout(function (event) { $(this).css({"background": "blue",});
})

  • 参数同上,绑定后鼠标进入元素的子元素会再次触发。

4. 鼠标进入和离开(进入子元素不触发)

  • mouseenter() 鼠标进入
  • mouseleave() 鼠标离开
$div = $("div")
$div.mouseenter(function (event) { $(this).css({"background": "blue",});
})
$div.mouseleave(function (event) { $(this).css({"background": "blue",});
})

  • 参数同上,绑定后鼠标进入和离开子元素不会再次触发。

5. hover():同时为mouseenter和mouseleave事件指定处理函数

$div = $("div")
// 鼠标进入和移出事件$div.hover(function (event) {$div.css({"background": "blue",})},function (event) {$div.css({"background": "red", });})

  • hover可以同时加入两个function,第一个是鼠标进入触发,第二个是移出触发。
  • 前面不可以添加data参数,否则报错。

6. 鼠标按下和松开

  • mouseup() 松开鼠标
  • mousedown() 按下鼠标
$div = $("div")
$div.mousedown(function (event) {$(this).css({"background": "blue",});console.log(event);
})$div.mouseup(function (event) {$(this).css({"background": "blue",});console.log(event);
})

  • 参数同click,和点击事件click不同的是,click在鼠标点击(包括按下和松开)后才触发事件,这里是按下或松开就会触发。

7. mousemove() 鼠标在元素内部移动

  • 同法和参数同上。

二、键盘事件

*keypress():按下键盘(指的是按下)

 $(window).keypress([20],function (event) {$div.css({"background": "blue",});console.log(event.which);            })

  • 参数:同鼠标事件,第一个参数传递数据,function默认参数event值按下键盘事件。
  • 键盘事件需要绑定可获得焦点的元素,如:input,body,html,一般绑定窗口:window。
  • 如果需要具体判断按下了那个按键,使用event.which,返回键盘字母的ascii码。

注意:如果按下不放开,事件会连续触发。

*按下和松开

  • keydown() 按下键盘
  • keyup() 松开键盘
$(window).keydown([20],function (event) {$div.css({"background": "blue",});console.log(event);
})$(window).keyup([20],function (event) {$div.css({"background": "blue",});console.log(event);
})

  • 参数同上。
  • keydown和keypress方法区别在于,keypress事件不会触发所有的按键,比如 ALT、CTRL、SHIFT、ESC等。

三、焦点事件

* 元素获取和失去焦点

  • blur() 元素失去焦点
  • focus() 元素获得焦点
$put = $("input");
$put.focus():元素自动获取焦点$put.focus(function (event) {console.log(event);$div.css({"background": "blue",})
})//获取焦点后触发事件

$put.blur(function (event) {console.log(event);$div.css({"background": "blue",})
})//失去焦点后触发事件

  • 参数同click;
  • 焦点事件一般使用在input标签上,其他的标签一般得不到焦点。

四、表单事件

* submit(): 用户递交表单

$(".form").submit(function (event) {alert("提交事件");console.log(event);//阻止系统默认事件
    event.defaultPrevented();return false;
})

  • submit事件绑定在form表单上,点击提交按钮时触发该事件,可以对系统默认的提交进行拦截。
  • event.defaultPrevented();//阻止系统提交数据

五、其他事件

* ready():DOM加载完成后执行

  • 这个事件用来防止js报错,每次引入js都要使用,不在赘述。

* resize():浏览器窗口的大小发生改变触发事件

$(window).resize(function () {console.log($(window).width());})

  • 参数同click,这个事件需要绑定在window上才会生效,用于监控窗口的变化。

* scroll():滚动条的位置发生变化

* change(): 表单元素的值发生变化

$put.change(function () {$div.css({"background": "blue",});})

  • 当表单元素如单选框、多选框、文本框等值发生变化时触发。

* unload() :用户离开页面

$(document).unload(function () {$div.css({"background": "blue",});console.log("likai");
})

六、通用的绑定事件和解绑方法

* bind():绑定

$(function(){$('div').bind('mouseover click', function(event) {alert($(this).html());});
});

  • 参数:第一个参数为需要绑定的事件的名字,可以绑定多个事件,之间用空格隔开;第二个参数是处理函数。

* unbind():解绑

$(function(){$('#div1').bind('mouseover click', function(event) {// $(this).unbind();解绑所有事件$(this).unbind('mouseover');解绑指定事件});
});

  • 参数同bind。

* on():绑定和委托都可用的方法

$("div").on(event,childSelector,data,function);
//四个参数

$(function(){$('div').on('mouseover click', function(event) {$(this).css({"background": "blue",});});
});

  • 参数
  • event,需要绑定的事件,多个事件用空格隔开;
  • function:事件的处理方法。
  • childSelector:选择需要委托的元素,用于委托事件。
  • data:额外的传参。

* off():解绑

$(function(){$('#div1').on('mouseover click', function(event) {// $(this).off();解绑所有事件$(this).off('mouseover');解绑指定事件});
});

* one():绑定一次自动解绑

如果需要触发事件一次后就自动失效,比如:按钮点击一次后 就失效使用这个方法。

$(function(){$('div').one('mouseover click', function(event) {$(this).css({"background": "blue",});});
});

  • 注意:当一次性绑定多个事件时,多个事件相互是独立的,即如果有一个事件被触发,那么这个事件解绑,对另外没有被触发的事件没有影响。

七、自定义和主动触发事件

说明:对于系统没有提供的事件,可以自己定义并主动触发。

$div.bind("abc",function () {$(this).css({"background": "blue",});})
$div.trigger("abc");

  • trigger():触发事件的方法;这种方式类似协程。

八、事件的两大特征运用:

1. 事件的冒泡:

  • 定义:一个元素标签如div,在上面触发某种事件,如单击;如果div上没有定义单击事件或者定义了单击事件,但返回值不是false,即没有阻止冒泡;那么事件会向父级传递,每一个定义了单击事件的父级都会被触发事件,直到到达document或window。

注意:冒泡是事件的固有属性(自定义不适用),适合所有的系统事件。

  • 作用: 允许多个事件被击中到父级处理,减少绑定次数,提高性能。
$(function(){var $box1 = $('.father');var $box2 = $('.son');var $box3 = $('.grandson');$box1.click(function() {alert('father');});$box2.click(function() {alert('son');});$box3.click(function(event) {alert('grandson');// event.stopPropagation();阻止冒泡
});$(document).click(function(event) {alert('grandfather');});
})......<div class="father"><div class="son"><div class="grandson"></div></div>
</div>

  • 说明:上面代码界面,单击“grandson”的div,所有事件都会被触发;
  • 如果要阻止事件冒泡,使用stopPropagation()

扩展:合并阻止操作

event.stopPropagation();//阻止冒泡
event.preventDefault();//阻止默认行为// 合并写法:
return false;

  • 实际开发中,一般把阻止冒泡和阻止默认行为合并起来写。

2. 事件委托

定义:

利用冒泡原理,将要处理相同事件的子元素的事件委托给父级,从而极大减少事件绑定的次数,提高性能。

  • 委托事件

  1. delegate():
$(function(){$list = $('list');$list.delegate('li', 'click', function(event) {$(this).css({background:'red'});});
})//给列表下面的每个li元素的事件委托给list列表。

  • 参数:第一个参数是需要委托的元素,采用css选择器的写法,默认从一级子元素开始;第二个参数时要委托的事件,可以是多个,之间用空格隔开,第三个参数是处理函数。

  • event指触发事件的那个对象。

  1. on():
$(function(){$list = $('list');$list.on('click', 'li', function(event) {$(this).css({background:'red'});});
})//给列表下面的每个li元素的事件委托给list列表。

参数:

  • 第一个是需要委托的事件,多个用空格隔开;
  • 第二个是需要委托事件的子元素;
  • 第三个是触发处理函数。
  1. one():委托触发一次自动取消委托
$(function(){$('div').one('click',"li" function(event) {$(this).css({"background": "blue",});});
});

说明:参数用法和on事件一样。

取消委托

  1. undelegate():
$list.undelegate();//选择器找到委托对象取消委托

  • 使用undelegate()方法取消委托,所有的子元素的委托都将被取消。
  1. off():

$list.off("click","li");

总结:

  • 每一个事件相当于一个协程,异步操作;
  • 所有的事件并列处理,事件不要嵌套事件,否则会出现重复绑定。
  • 可以进行事件委托尽量使用委托,减少系统资源消耗。

补充实例:

动态给ul添加li标签的时候,li标签原来已经绑定了click事件,但新添加的标签click不起作用,那么需要委托绑定delegate()

click和bind是提前绑定,delegate()是当单击标签的时候才绑定的

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><input class="btn" type="button" value="添加"><ul><li>11</li><li>22</li><li>33</li></ul><script src="jquery.js"></script><script>$(function () {$(".btn").click(function () {$("ul").append("<li>88</li>")});$("li").click(function () {alert('123')})});</script>
</body>
</html>

原来的代码可以弹出,新增的li标签不能弹出123

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><input class="btn" type="button" value="添加"><ul><li>11</li><li>22</li><li>33</li></ul><script src="jquery.js"></script><script>$(function () {$(".btn").click(function () {$("ul").append("<li>88</li>")});$("ul").delegate('li','click',function () {  //将所有的li标签委托绑定给ulalert('123')})});</script>
</body>
</html>

将li标签委托绑定给li

转载于:https://www.cnblogs.com/sunshuhai/p/9129931.html

【html、CSS、javascript-11】jquery-事件使用方法总结相关推荐

  1. 原生javascript取代jquery的一些方法(jQuery-free)

    转自:http://www.qingdou.me/2687.html jQuery是最流行的JavaScript工具库.据统计,目前全世界57.3%的网站使用它.也就是说,10个网站里面,有6个使用j ...

  2. jQuery 事件 - ready() 方法

    jQuery 事件 - ready() 方法 当 DOM(文档对象模型) 已经加载,并且页面(包括图像)已经完全呈现时,会发生 ready 事件. 1.语法1 $(document).ready(fu ...

  3. jquery 列表hover效果 ,css :hover ,jquery 事件委托,jquery hover()方法

    jquery 列表hover效果 <ul class="list"><li class="item"><span>1< ...

  4. jQuery 事件 - bind() 方法

    定义和用法 bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数. 实例1(一个事件) 记得把js引用地址换掉 当点击鼠标时,隐藏或显示 p 元素: <html&g ...

  5. jquery事件使用方法总结

    jquery提供了许多的事件处理函数,下面对其总结一下,梳理一下知识点,便于记忆和使用. 一.鼠标事件 1. click():鼠标单击事件 $div = $("div") $div ...

  6. jQuery 事件绑定方法(bind hover toggle live.... )、删除事件方法(unbind, die)及 事件对象

    事件绑定方法: 1.<type>(function) $("button").click(function(){... }); 2.bind(map) $(" ...

  7. miniui mysql_MiniUi系列 jQuery 事件 - delegate() 方法

    当点击鼠标时,隐藏或显示 p 元素: $("div").delegate("button","click",function(){ $(&q ...

  8. jQuery 事件 scroll() 方法的使用教程

    当用户滚动指定的元素时,会发生 scroll 事件.scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口).scroll() 函数触发 scroll 事件.或者如果设置了 fun ...

  9. jquery事件代理方法

    之前写过原生js的事件代理,最近在用jquery写项目,自然少不了事件代理,所以今天就来写下jquery的事件代理: 例如下面的例子:用事件代理的方法给每个li都添加一个点击事件, HTML代码: & ...

  10. 很实用的jQuery事件 - toggle() 方法

    转自w3school 实例 切换不同的背景色: $("p").toggle(function(){$("body").css("background- ...

最新文章

  1. Kubernetes是什么
  2. yield( )函数的使用
  3. 4.0以后的新布局方式GridLayout
  4. odoo开发笔记 -- 异常、错误、警告、提示、确认信息显示
  5. C#DateTime为“ YYYYMMDDHHMMSS”格式
  6. QT之计算器代码重构(六)
  7. 和逛微博、刷朋友圈一样玩转 GitHub
  8. html编写组织结构,编写模块化的CSS:CSS文件组织结构
  9. 2017.9.29 road 失败总结
  10. mysql b 树 锁_mysql索引B+树、MVCC、锁一文搞懂
  11. 放弃 PHP,选择 Node.JS 的 8 个理由!
  12. 一篇文章带你搞懂观察者模式
  13. 用户权限管理模块的数据库设计
  14. 浅谈测试小白到测试大牛的成长历程(分四个境界)
  15. 欧姆龙NX102与JTEKT PC10G进行EIP实列ID通信
  16. VMware14 黑屏问题
  17. python中assert是什么意思_你常常看到 Python 代码中的 assert 是个啥?
  18. python爬虫笔记——Scrapy框架(浅学)
  19. 细胞生物学8-第八章-细胞骨架
  20. java future 源码,读FutureTask源码

热门文章

  1. python形参、实参
  2. input 上传图片_selnium远程机上传图片遇到的坑-布布扣
  3. 长安链技术架构与共识模块介绍
  4. 区块链 single共识
  5. kubernetes 如何彻底删除pod、deployment、service
  6. Unity3D(一) 操作界面及游戏常识
  7. Centos 8 安装和配置 VNC 服务,让 MAC 可以远程桌面管理Centos(linux)
  8. discuz-ucenter-api-for-java 中文乱码问题
  9. Java 设计模式 之 代理模式(Proxy)
  10. mybatis逆向工程maven版本idea工具