大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新......

在这里我会从 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(六)为元素绑定多个相同事件,解绑事件的更多相关文章

  1. 从零开始学 Web 之 jQuery(二)获取和操作元素的属性

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. 从零开始学 Web 之 jQuery(三)元素操作,链式编程,动画方法

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  3. 从零开始学 Web 之 jQuery(五)操作元素其他属性,为元素绑定事件

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  4. 从零开始学 Web 之 jQuery(四)元素的创建添加与删除,自定义属性

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  5. 从零开始学 Web 之 jQuery(一)jQuery的概念,页面加载事件

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  6. 从零开始学 Web 之 jQuery(七)事件冒泡,事件参数对象,链式编程原理

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  7. 从零开始学 Web 之 jQuery(八)each,多库共存,包装集,插件

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  8. jquery绑定事件,解绑事件

    unbind([type],[data]) 是 bind()的反向操作,从每一个匹配的元素中删除绑定的事件.如果没有参数,则删除所有绑定的事件.你可以将你用bind()注册的自定义事件取消绑定.如果提 ...

  9. 从零开始学 Web 之 DOM(六)为元素绑定与解绑事件

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... +-------------------------------------------------------- ...

随机推荐

  1. 字符串转码中文乱码问题的进一步理解 UTF-8 GBK转码

    首先 要明确指出一点: 编码方式是针对字符串转换之后的字节数组的,字符串并没有编码方式的概念,因为字符串不管是在什么编码页面下他只是一个对象,他只有字符的概念,不管页面编码方式是什么,他始终都是那几个 ...

  2. 【转】nc 使用说明

    netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它.使用netcat命令所能完成的事情令人惊讶. netcat所做的 ...

  3. ABP框架系列之二十一:(Domain-Services-领域服务)

    Introduction Domain Services (or just Service, in DDD) is used to perform domain operations and busi ...

  4. GPU、CPU、FPGA

    一.计算核心增加 二者都由寄存器.控制器.逻辑单元构成,但比例很大不同,决定了CPU擅长指令处理,函数调用上:GPU在数据处理(算数运算/逻辑运算)强力很多. NIVIDA基于Maxwell构架的GP ...

  5. Web API使用HttpResponseMessage与HttpResponseException的差异 HttpResponseMessage 返回类型

    在 Web API 中提供了 HttpResponseMessage 与 HttpResponseException 用于处理返回讯息,HttpResponseMessage 用于返回一个来自于客户端 ...

  6. windows server防火墙添加例外的步骤

      Windows Server 2012 防火墙如何添加端口例外的方法 在Windows Server 2012系统中,如果用户想在防火墙中开通一个端口,您可以按以下步骤执行: 1. 首先点击桌面左 ...

  7. 3 week work—Grid Layout

    HTML: <div class="wrapper"> //建立一个三列轨道网格. <div class="one">One</d ...

  8. 带权单源最短路发[稠密图](Dijkstra)

    对于稠密图,采用邻接矩阵较为合适 所以我们先构建一个邻接矩阵 typedef int Vertex; typedef int WeightType; //图 typedef struct MyGrap ...

  9. docker知识点杂记

    最近重新梳理了一下docker的一些基本知识,简单做了下总结.以后会逐步补充. 1.查看系统内核版本,需要3.10以上 $ uname -r 2.下载docker 说明:centos安装docker比 ...

  10. NET Core微服务之路:再谈分布式系统中一致性问题分析

    前言 一致性:很多时候表现在IT系统中,通常在分布式系统中,必须(或最终)为多个节点的数据保持一致.世间万物,也有存在相同的特征或相似,比如儿时的双胞胎,一批工厂流水线的产品,当然,我们不去讨论非IT ...