从零开始学 Web 之 jQuery(六)为元素绑定多个相同事件,解绑事件
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新......
- github:https://github.com/Daotin/Web
- 微信公众号:Web前端之巅
- 博客园:http://www.cnblogs.com/lvonve/
- CSDN:https://blog.csdn.net/lvonve/
在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

一、为元素绑定多个相同事件
1、方式一
$("#btn").click(function () {
console.log("click1");
}).click(function () {
console.log("click2");
}).click(function () {
console.log("click3");
});
2、方式二
$("#btn").bind("click",function () {
console.log("bind:click1");
}).bind("click",function () {
console.log("bind:click2");
}).bind("click",function () {
console.log("bind:click3");
});
注意:下面使用 bind 对象的方式,只会执行最后一个相同的绑定事件。
$("#btn").bind({
"click": function () {
console.log("bind-obj:click1");
}, "click": function () {
console.log("bind-obj:click2");
}, "click": function () {
console.log("bind-obj:click3");
}
});
二、元素绑定事件的区别
先说结论:通过调用事件名的方式和 bind 的方式只能绑定之前存在的元素,后添加的元素不能绑定事件;而 delegate 和 on 的方式绑定元素的方式可以。
示例1:
// 事件名
$("#btn").click(function () {
$("#dv").append($("<p>p标签</p>"));
$("p").click(function () {
alert("p被点了");
});
$("#dv").append($("<p>p标签2</p>"));
});
// bind
$("#btn").click(function () {
$("#dv").append($("<p>p标签</p>"));
$("p").bind("click", function () {
alert("p被点了");
});
$("#dv").append($("<p>p标签2</p>"));
});
点击 p标签2 的时候不会弹出对话框。
示例2:
// delegate
$("#btn").click(function () {
$("#dv").append($("<p>p标签</p>"));
$("#dv").delegate("p", "click", function () {
alert("p被点了");
});
$("#dv").append($("<p>p标签2</p>"));
});
// on
$("#btn").click(function () {
$("#dv").append($("<p>p标签</p>"));
$("#dv").on("click", "p", function () {
alert("p被点了");
});
$("#dv").append($("<p>p标签2</p>"));
});
后添加的 p 标签也会被绑定点击事件。
三、解绑事件
用什么方式绑定的事件,最好用什么方式解绑事件。
1、bind 解绑事件
语法:
// 解绑单个或多个事件
绑定事件的元素.unbind("事件名1 事件名2 ...");
// 解绑所有的事件
绑定事件的元素.unbind();
PS:unbind 也可以解绑
元素.事件名(事件处理函数)方式的绑定事件。
2、delegate 解绑事件
语法:
// 解绑子元素单个或多个事件
父元素.undelegate("子元素", "事件1 事件2 ...");
// 解绑子元素的所有事件
父元素.undelegate();
下面的写法是无效的:
父元素.undelegate("子元素");,不能移除子元素的所有事件。
3、on 解绑事件
语法:
// 父元素和子元素的所有事件都会解绑
父元素.off();
// 父元素和子元素的单个或多个事件解绑
父元素.off("事件1 事件2 ...");
// 子元素的所有事件解绑
父元素.off("", "子元素");
// 子元素的单个或多个事件解绑
父元素.off("事件1 事件2 ...", "子元素");
// 父元素中所有的子元素的所有事件解绑
父元素.off("", "**");
// 父元素中所有的子元素的单个或多个事件解绑
父元素.off("事件1 事件2 ...", "**");
注意:子元素的所有事件解绑 。下面的写法是无效的。
父元素.off("子元素");

从零开始学 Web 之 jQuery(六)为元素绑定多个相同事件,解绑事件的更多相关文章
- 从零开始学 Web 之 jQuery(二)获取和操作元素的属性
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 从零开始学 Web 之 jQuery(三)元素操作,链式编程,动画方法
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 从零开始学 Web 之 jQuery(五)操作元素其他属性,为元素绑定事件
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 从零开始学 Web 之 jQuery(四)元素的创建添加与删除,自定义属性
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 从零开始学 Web 之 jQuery(一)jQuery的概念,页面加载事件
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 从零开始学 Web 之 jQuery(七)事件冒泡,事件参数对象,链式编程原理
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 从零开始学 Web 之 jQuery(八)each,多库共存,包装集,插件
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- jquery绑定事件,解绑事件
unbind([type],[data]) 是 bind()的反向操作,从每一个匹配的元素中删除绑定的事件.如果没有参数,则删除所有绑定的事件.你可以将你用bind()注册的自定义事件取消绑定.如果提 ...
- 从零开始学 Web 之 DOM(六)为元素绑定与解绑事件
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... +-------------------------------------------------------- ...
随机推荐
- 拉普拉斯平滑处理 Laplace Smoothing
背景:为什么要做平滑处理? 零概率问题,就是在计算实例的概率时,如果某个量x,在观察样本库(训练集)中没有出现过,会导致整个实例的概率结果是0.在文本分类的问题中,当一个词语没有在训练样本中出现,该词 ...
- python基础之Day7part2 史上最清晰字符编码理解
二.字符编码 基础知识: 文本编辑器存取文件原理与py执行原理异同: 存/写:进入文本编辑器 写内容 保存后 内存数据刷到硬盘 取/读:进入文本编辑器 找到内容 从硬盘读到内存 notepad把文件内 ...
- c++沉思录 学习笔记 第六章 句柄(引用计数指针雏形?)
一个简单的point坐标类 class Point {public: Point():xval(0),yval(0){} Point(int x,int y):xval(x),yval(y){} in ...
- 提交操作自动遮蔽实现之ajax
有时候,我们期望一些提交操作自动增加遮蔽效果,提交成功时自动去除遮蔽. 方案: 1. 提交前增加遮蔽逻辑,成功后增加去除遮蔽逻辑,但是不够智能 2.通过ajax拦截,实现自动添加\去除遮蔽效果 aja ...
- JavaScript 变量的作用域名
在JavaScript中,用var申明的变量实际上是有作用域的. 如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量: 'use strict'; function ...
- poj1284
一个欧拉函数的应用,当时也没有太搞清,这里直接用的当时的模板 #include<iostream> #include<cstdlib> #include<cstdio&g ...
- SQL SERVER中LIKE在Char和nChar输出结果不一致解惑
一同事在写脚本时,遇到一个关于LIKE里面使用不同的变量类型导致查询结果不一致的问题,因为这个问题被不同的人问过好几次,索性总结一下,免得每次都要解释一遍,直接丢一篇博客岂不是更方便!其实看似有点让人 ...
- Transform Model
self attention Q=K=V :输入一个句子,那么里面的每个词都要和该句子中的所有词进行attention计算,目的是要学习句子内部词之间的依赖关系,捕获句子的内部结构. 首先,要buil ...
- C# 从后台代码同步或异步注册Javascript到页面之RegisterStartupScript和RegisterClientScriptBlock的区别
下面来讲讲同步注册JS和异步注册JS的区别 同步注册JS:RegisterClientScriptBlock,相当于在 form开始处(紧接 <form runat="server&q ...
- 05 IO和管道
目录 三种I/O设备 把I/O重定向至文件 使用管道 知识铺垫 1)查看fd-文件描述符 (L) ll /proc/$$/fd 在Linux中,系统打开文件时会随机分配一个编号 ...