【html、CSS、javascript-11】jquery-事件使用方法总结
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. 事件委托
定义:
利用冒泡原理,将要处理相同事件的子元素的事件委托给父级,从而极大减少事件绑定的次数,提高性能。
委托事件:
- delegate():
$(function(){
$list = $('list');
$list.delegate('li', 'click', function(event) {
$(this).css({background:'red'});
});
})//给列表下面的每个li元素的事件委托给list列表。
参数:第一个参数是需要委托的元素,采用css选择器的写法,默认从一级子元素开始;第二个参数时要委托的事件,可以是多个,之间用空格隔开,第三个参数是处理函数。
event指触发事件的那个对象。
- on():
$(function(){
$list = $('list');
$list.on('click', 'li', function(event) {
$(this).css({background:'red'});
});
})//给列表下面的每个li元素的事件委托给list列表。
参数:
- 第一个是需要委托的事件,多个用空格隔开;
- 第二个是需要委托事件的子元素;
- 第三个是触发处理函数。
- one():委托触发一次自动取消委托
$(function(){
$('div').one('click',"li" function(event) {
$(this).css({
"background": "blue",
});
});
});
说明:参数用法和on事件一样。
取消委托
- undelegate():
$list.undelegate();//选择器找到委托对象取消委托
- 使用undelegate()方法取消委托,所有的子元素的委托都将被取消。
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标签委托绑定给ul
alert('123')
})
});
</script>
</body>
</html>
将li标签委托绑定给li
【html、CSS、javascript-11】jquery-事件使用方法总结的更多相关文章
- JavaScript和jQuery中的方法整理
一.属性操作 // JavaScript: Dom.hasAttribute('attrName'); //是否有指定属性 Dom.hasAttributes(); //是否有属性 Dom.getAt ...
- jQuery 事件 - bind() 方法
定义和用法 bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数. 实例1(一个事件) 记得把js引用地址换掉 当点击鼠标时,隐藏或显示 p 元素: <html&g ...
- 【Python全栈-JavaScript】jQuery事件
jQuery事件 一.页面载入 当DOM载入就绪可以查询及操纵时绑定一个要执行的函数. 这是事件模块中最重要的一个函数,因为它可以极大地提高web应用程序的响应速度. 简单地说,这个方法纯粹是对向 w ...
- Javascript和jquery事件-鼠标移入移出事件
javascript使用mouseover和mouseout,只在css中支持hover jquery支持mouseover和mouseout,封装了mouseenter.mouseleave事件函数 ...
- jquery事件使用方法总结
jquery提供了许多的事件处理函数,学习前端一段时间了,下面对其总结一下,梳理一下知识点. 一.鼠标事件 1. click():鼠标单击事件 $div = $("div") $d ...
- jQuery事件委托方法 bind live delegate on
1.bind jquery 1.3之前 定义和用法:主要用于给选择到的元素上绑定特定事件类型的监听函数 语法: bind(type,[data],function(e)); 特点: a.适合页 ...
- jquery事件使用方法总结 (转)
http://www.cnblogs.com/cwp-bg/p/7668940.html jquery提供了许多的事件处理函数,学习前端一段时间了,下面对其总结一下,梳理一下知识点. 一.鼠标事件 1 ...
- jQuery事件绑定方法bind、 live、delegate和on的区别
我们试图绑定一些事件到DOM元素上的时候,我相信上面这4个方法是最常用的.而它们之间到底有什么不同呢?在什么场合下用什么方法是最有效的呢? 1.准备知识 当我们在开始的时候,有些知识是必须具备的: 1 ...
- jQuery 事件 - trigger() 方法
<html> <head> <script type="text/javascript" src="/jquery/jquery.js&qu ...
- jQuery 事件 - delegate() 方法
<html><head><script type="text/javascript" src="/jquery/jquery.js" ...
随机推荐
- Linux操作系统系列-Linux发布Web项目
安装JDK 下载jdk 验证是否安装JDK java 如果已经安装了jdk查看已经安装的版本 java -version 如果安装不是所需要的 卸载当前java SDK 通过rpm查看已经安装包 (r ...
- 小米手机 DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs
手机:小米2s,MIUI 9 7.11.16 开发版 手机已处于开发者模式,启用了USB调试,已使用USB线连接了手机,在Android Studio 工具栏点击 "Run ‘app’(Sh ...
- [记录]学习树莓派3B接DHT11和LCD1602和修改树莓派时区
前提 树莓派系统安装好 apache web 服务器,如未安装,可在树莓派内执行sudo apt-get install apache2 进行安装apache 也可以通过命令获取GPIO信息: gpi ...
- leetcode-129-求根到叶子结点数字之和
题目描述: 第一次提交: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self. ...
- 2016.8.18上午纪中初中部NOIP普及组比赛
2016.8.18上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1336 翻!车!啦!好吧,那是因为大神归来. 进度: 比赛:AC ...
- 【JZOJ3362】【BZOJ3758】数数
description 神犇最近闲来无事,于是就思考哲学,研究数字之美.在神犇看来,如果一个数的各位能够被分成两个集合,而且这两个集合里的数的和相等,那么这个数就是优美的(具体原因就只有神犇才知道了) ...
- 异或前缀和,组合数学——cf1054D
/* 每个异或前缀和sum[i]只有两个值 区间异或和不为0,即两个不相等的前缀和 sum[i]的两个前缀和只要标记一个就可以了,为了去重只用map保存最小的那个来计数 最后统计相同的前缀和时,为了使 ...
- python事件调度库sched
事件调度 sched模块内容很简单,只定义了一个类.它用来最为一个通用的事件调度模块. class sched.scheduler(timefunc, delayfunc)这个类定义了调度事件的通用接 ...
- Spring Boot与监控管理
概念: 通过引入spring-boot-starter-actuator,可以使用Spring Boot为我们提供的准生产环境下的应用监控和管理功能.我们可以通过HTTP,JMX,SSH协议来进行操作 ...
- 牛客网在线判题系统JavaScript(V8)使用
JavaScript作为一种弱类型的编程语言,语法和C/C++.JAVA等存在差别,但是对于大部算法题,不只是C/C++.JAVA,也依然可以使用JavaScript来实现.所以在牛客网中,如果你喜欢 ...