从零开始学 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 系列教程 」,并在下列地址同步更新...... +-------------------------------------------------------- ...
随机推荐
- springboot自带定时任务和集成quartz
1,springboot自带的定时任务 默认是单线程 有这个依赖就可以 <dependency> <groupId>org.springframework.boot</ ...
- android中一些特殊字符的使用(如:←↑→↓等箭头符号)
在项目中,有时候在一些控件(如Button.TextView)中要添加一些符号,如下图所示: 这个时候可以使用图片的方式来显示,不过这些可以直接使用Un ...
- highcharts echarts比较
1,highcharts底层是svg echarts底层是canvas 2,svg和canvas的区别 canvas 依赖分辨率 不支持事件处理器 弱的文本渲染能力 能够以 .png 或 .jpg 格 ...
- [费用流][BZOJ1070]修车
修车 题目描述 同一时刻有位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均 ...
- 去掉手机端延迟300ms
手机端300ms延迟是由于在手机上可以双击可以放大缩小造成的,当初ios苹果的工程师们做了一些约定,应对 iPhone 这种小屏幕浏览桌面端站点的问题.这就是手机端300ms延迟的由来. 解决:我是用 ...
- Python12/25--前端之BOM/DOM
一.DOM 1. 什么是DOM 文档对象模型 Document Object Model 文档对象模型 是表示和操作 HTML和XML文档内容的基础API 文档对象模型,是W3C组织推荐的处理可扩展标 ...
- ABP框架系列之四十:(Notification-System-通知系统)
Introduction Notifications are used to inform users on specific events in the system. ASP.NET Boiler ...
- 走进JDK(五)------AbstractList
接下来的一段时间重点介绍java.util这个包中的内容,这个包厉害了,包含了collection与map,提供了集合.队列.映射等实现.一张图了解java中的集合类: AbstractList 一. ...
- sql pivot(行转列) 和unpivot(列转行)的用法
1.PIVOT用法(行转列) select * from Table_Score as a pivot (sum(score) for a.name in ([语文],[数学],[外语],[文综],[ ...
- myeclipse 自动部署web项目(自动编译)
打开自动编译:project->build automatically; 注:以下两种方法适用tomcat配置在myeclipse中的情况. 1.如果在myeclipse中tomcat是以deb ...