关于js事件执行顺序
js事件执行顺序是js中一个老生常谈的一个话题,
聊这个话题之前我们先谈谈怎么给页面元素绑定我们需要的事件
1.给页面元素绑定事件
a)直接在元素上面加上需要绑定的事件,如
<button type="button" onclick="console.log('111')"></button>
结果如下:

此方法不建议使用,有两方面的原因,
1)此方法绑定的方法必须为一个全局的方法,而通常我们需要绑定的方法都是针对某一处特定的方法,并不具备通用性,如果全部写成全局方法,不利于我们模块化开发。
2)此绑定方法只能给元素绑定一个方法,而我们对于元素绑定的方法可能有多个。
b)dom元素生成后,给其绑定方法。
注:此处插入一句,保证dom元素已经生成了是我们给其绑定方法的前提。
jquery1.7版本弃用了live,目前笔者查阅资料没有找到可以给未来元素绑定事件的方法,如果有那我读者知道相关的方法,欢迎给笔者留言。

<button type="button">点我</button>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
$('button').on('click',function(){
console.log('111');
})
</script>

结果如下:

此方法的好处就是可以解决直接在元素上面添加方法的两个弊端,并且事件的执行顺序是按照我们给元素添加事件的顺序依次进行。
这里就讲到了我们现在要说的事件执行顺序,大多数时候,事件执行顺序的控制,就通过我们添加事件顺序来控制。
但是,有时候,我们项目中会应用一些别人的插件,而此时,我们想要控制事件在插件事件之后就不是很好控制了,比较插件事件可能并没有回调函数的设置。
这时,笔者就想到了事件的另外一个特性,事件冒泡。
事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。相反的,事件冒泡是自下而上的去触发事件。绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,事件冒泡。默认false,即事件冒泡。Jquery的e.stopPropagation会阻止冒泡,意思就是到我为止,我的爹和祖宗的事件就不要触发了。
关于事件冒泡和事件捕获这里就不再赘述,不懂的童鞋请移步https://www.cnblogs.com/christineqing/p/7607113.html
如上 所示,如果我们要在chilid上面绑定的所有方法都执行完了以后执行一个方法,如,console.log('111')
我们可以将此方法绑定到parent上,这样就可以保证,此方法一定是在child上面绑定的所有方法执行完成了以后执行。
http://www.cnblogs.com/nianhappyhouse/p/9482679.html
关于js事件执行顺序的更多相关文章
- 关于js事件执行顺序小技巧
js事件执行顺序是js中一个老生常谈的一个话题, 聊这个话题之前我们先谈谈怎么给页面元素绑定我们需要的事件 1.给页面元素绑定事件 a)直接在元素上面加上需要绑定的事件,如 <button ty ...
- js事件执行顺序
http://ejohn.org/blog/how-javascript-timers-work/
- jquery ajax 中各个事件执行顺序
jquery ajax 中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事 ...
- Wex5页面事件执行顺序
wex5 事件执行顺序data组件的onCustomRefresh→ model组件的onLoad→ windowReceiver组件的onReceive
- ASP.NET Page对象各事件执行顺序(转)
很久没写 asp.net 的东西了,search 了一下 page 的事件执行顺序,找到如下的东西,仅仅做记录用 Page.PreInit 在页初始化开始时发生 Page.Init 当服务器控件初始化 ...
- jquery中各个事件执行顺序如下:
jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.e ...
- jquery ajax 事件执行顺序
jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.e ...
- 浅析js的执行顺序
javascript是一种描述型的脚本语言,是一种解析语言,由浏览器动态解析,不同种类的浏览器不同版本的浏览器对于js的解析有着微小的差别,不同浏览器的js解析引擎效率也有高低,下面来给大家分析一下j ...
- js代码执行顺序问题
前 言 LiuDaP 今天就给大家介绍一个特别基础的东西,javascript中函数的一点儿小知识(js代码的执行顺序),希望对大家有那么一点点帮助吧!!! 一.js--->单线程 严格意 ...
随机推荐
- Ionic3的http请求如何实现token验证,并且超时返回登录页
要求 后台提供的接口,不能让人随便输入个链接就能访问,而是要加入一个token,token是动态的,每次访问的时候判断,有权限并且未过期的时候才可以访问接口. 后台的设计是 在登录的时候,首先要pos ...
- restfull api交互常用状态码
2xx (成功类别) 200 Ok:标准的 HTTP 响应,表示 GET.PUT 或 POST 的处理成功. 201 Created:在创建新实例时,应返回此状态代码.例如,使用 POST 方法创建一 ...
- JeeSite 部署到linux服务器
1.打包 改数据库连接 打包war包https://www.cnblogs.com/wdw31210/p/9878422.html 2.上传到linux 服务器的tomcat/webapps/ 下 安 ...
- windows刷新本机DNS缓存
ipconfig /flushdns
- rt-thread中软件定时器组件超时界限的一点理解
@2019-01-15 [小记] 对 rt-thread 中的软件定时器组件中超时界限的一点理解 rt_thread_timer_entry(void *parameter)函数中if ((next_ ...
- [2017-7-27]Android Learning Day5
总结篇! 吭哧吭哧了三天,最近不断研究<第一行代码:第二版>170多页的那个新闻实践项目,虽然也没有用到数据库和一些Web爬虫的知识,新闻数据都是随机生成的字符串...... 但还是很开心 ...
- Palindrome Function HDU - 6156(数位dp)
要求m-n内在l-r进制下的是回文数的总个数. dp[进制][从第j为开始][目前到达第k位] = 总的方案数 dfs枚举目前的到达的位置,这个数开始的位置,进制,前导零,限制条件,然后枚举的时候如果 ...
- 20165223 week6测试错题总结
由于时间预估错误及手机自身卡顿问题,虽然已经作答完成,却在最后提交时出现错误,错失提交时间,所以没能按时提交答案,也就没有纠错,以下仅凭印象列出错题: Q1:若超出JVM运行能力,如"byt ...
- Python基础教程2上的一处打印缺陷导致的代码不完整#1
#1对代码的完善的 出现打印代码处缺陷截图: 图片上可以看到,定义的request根本没有定义它就有了.这个是未定义的,会报错的,这本书印刷问题,这个就是个坑,我也是才发现.花了点时间脱坑. 现在发完 ...
- OO第三阶段纪实
$0 写在前面 万里长征已过大半,即将迎来胜利的曙光.一路走来,经历过种种艰难,体会颇深.希望能记录下这篇博文,来总结这一个月来的收获与感悟. $1 规格化设计的发展历史 上世纪50年代,软件伴随着第 ...