事件的传播方式

    <div id="father">
<div id="son"></div>
</div>
<script>
//事件传播有两种方式
//自下而上 从子级到父级是 事件冒泡
//自上而下 从父级到子级是 事件捕获
var son = document.getElementById("son");
var father = document.getElementById("father");
var arr = [son,father,document,document.body];
for(var i=;i<arr.length;i++){
//传统方式绑定的事件 事件的传播顺序是冒泡顺序
// arr[i].onclick = function(){
// console.log(this);
// }
//第三个参数useCapture如果是false时间的传播顺序是冒泡顺序
// arr[i].addEventListener("click",function(){
// console.log(this);
// },false);
//第三个参数useCapture使用捕获事件的传播顺序是捕获顺序
arr[i].addEventListener("click",function(){
console.log(this);
},true)
}
</script>

通过addEventListener(添加点击事件监听器)形式的绑定事件不会互相抵消,从而实现一个按钮控制多个事件。

    <button id="btn1">按钮1</button>
<button id="btn2">按钮2</button>
<script>
var btn1=document.getElementById("btn1");
var btn2=document.getElementById("btn2");
//传统方式
btn1.onclick = function(){
console.log("第一个");
}
btn2.onclick = function(){
console.log("第二个");
}
//添加事件监听器
//addEventListener 添加事件监听器
//type listener uesCapture 事件类型 事件处理函数 使用捕获
btn2.addEventListener("click",function(){
console.log("第一个");
},false);
btn2.addEventListener("click",function(){
console.log("第二个");
},false);
//通过添加事件监听器形式绑定事件不会相互抵消
</script>

移除事件

    <button id="btn1">按钮1</button>
<button id="btn2">按钮</button>
<script>
var btn1 = document.getElementById("btn1");
var btn2 = document.getElementById("btn2");
//传统方式
btn1.onclick = function(){
console.log("第一个人");
}
btn1.onclick = function(){
console.log("第二个人");
}
// btn1.onclick=null;
//添加事件监听器
//如果添加的事件处理函数将来想要移除就不能使用匿名函数的方式
btn2.addEventListener("click",fn1,false);
function fn1(){
console.log("第二个人");
}
//移除事件监听器
btn2.removeEventListener("click",fn1,false);
</script>

JS添加/移除事件的更多相关文章

  1. a标签添加移除事件及开启禁用事件

    一.添加移除点击事件 <script type="text/javascript" src="jquery.min.js"></script& ...

  2. js添加事件、移除事件、阻止冒泡、阻止浏览器默认行为等写法(兼容IE/FF/CHROME)

    转自:http://blog.csdn.net/itchiang/article/details/7769341 添加事件   var addEvent = function( obj, type, ...

  3. 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结

    史上最全的CSS hack方式一览 2013年09月28日 15:57:08 阅读数:175473 做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我 ...

  4. js添加事件监听的方式与this

    js添加事件监听与this js添加事件监听的方式与this 在标签中调用自定义函数 DOM0级事件处理程序 DOM2级事件处理程序 this 代表谁? js添加事件监听的方式与this <di ...

  5. 原生JS添加事件方法

    事件 事件添加方式 EvenTarget.addEventListener(EvenName, functionName, option); EventName: example => clic ...

  6. ThinkPHP框架下,给jq动态添加的标签添加点击事件移除标签

    jq移除标签主要就是$("#要移除的id").remove();不再赘述,这里要提醒的是jq中动态添加标签后怎样添加点击事件.一般的jq添加点击事件是用这种方法$("#i ...

  7. jq添加和移除事件的方法,prop和attr

    会在写条件判断的时候遇到,今天在判断没有剩余产品的时候,移除事件.当有产品的时候添加事件: 移除onClick事件: $("a").removeAttr("onclick ...

  8. JS添加、设置属性以及鼠标移入移出事件

    源代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  9. js给页面添加回车监测事件,实现回车登录功能

    document.body.addEventListener('keyup', function (e) { ') { $("#btn_login").click(); } }) ...

随机推荐

  1. Centos6环境下CI(CodeIgniter)框架创建定时任务

    在我们项目开发过程中,经常遇到定时类需求,如果是仅仅一个PHP文件,那么很轻松的知道该怎么配置,但是在框架中,mvc设计思想访问对应控制器下的对应方法,那么就无从下手了.我这里参考网上的例子在自己的服 ...

  2. 12: nginx原理及常用配置

    1.1 nginx基本介绍 1.nginx高并发原理( 多进程+epoll实现高并发 ) 1. Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程. 2. 每个子进 ...

  3. linux下网卡bonding配置(转)

    linux下网卡bonding配置   章节 bonding技术 centos7配置bonding centos6配置bonding 一.bonding技术 bonding(绑定)是一种linux系统 ...

  4. Codeforces 765F Souvenirs - 莫队算法 - 链表 - 线段树

    题目传送门 神速的列车 光速的列车 声速的列车 题目大意 给定一个长度为$n$的序列,$m$次询问区间$[l, r]$内相差最小的两个数的差的绝对值. Solution 1 Mo's Algorith ...

  5. QML中打印

    1.console.log("123"); 2.console.log("a is ", a, "b is ", b); 3.打印代码块时间 ...

  6. 【系列教程1】Gradle入门系列三:依赖管理

    在现实生活中,要创造一个没有任何外部依赖的应用程序并非不可能,但也是极具挑战的.这也是为什么依赖管理对于每个软件项目都是至关重要的一部分. 这篇教程主要讲述如何使用Gradle管理我们项目的依赖,我们 ...

  7. P4592 [TJOI2018]异或

    吐槽 睡起来写道模板清醒一下 貌似有两个log的树剖写法,还有一个log的Trie树的差分做法(类似于count on a tree),然后一个log的要把两个询问分开写,一个dfs序一个差分,然后我 ...

  8. P2604 [ZJOI2010]网络扩容

    思路 简单的费用流问题,跑出第一问后在残量网络上加边求最小费用即可 代码 #include <cstdio> #include <algorithm> #include < ...

  9. LOJ121 「离线可过」动态图连通性

    思路 动态图连通性的板子,可惜我不会在线算法 离线可以使用线段树分治,每个边按照存在的时间插入线段树的对应节点中,最后再dfs一下求出解即可,注意并查集按秩合并可以支持撤销操作 由于大量使用STL跑的 ...

  10. Hive command

    hive常用命令 Hadoop Hive概念学习系列之hive里的分区(九) DOC hive分区(partition)简介 Hive分区(静态分区+动态分区) Hive分区.分桶操作及其比较 hiv ...