这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
本文主要介绍了 JavaScript 的 for 循环中嵌套一个点击事件点击一次弹出多个相同的值的解决方法,具有很好的参考价值。下面跟着小编一起来看下吧
先看下面一段代码:
- for (var i = 0; i < 10; i++) {
- $('#ul').bind('click',
- function() {
- alert(i)
- })
- }
对于这段代码,当点击 Id 为 "ul" 的元素时,会出现弹出 10 个 10。为什么会弹出 10 个 10 呢?
首先,这段代码中的点击事件不是绑定事件,是 jQuery 的绑定事件,那么绑定事件和普通事件是有区别的。普通事件中,如果对某一个元素添加多个点击事件,那么,最后一个将会把前面的所有点击事件全部覆盖,只能执行最后一个点击事件;而在绑定事件中,则不一样,在同一个元素上,即使绑定再多的点击事件,都会全部执行。也就是说,普通事件中的 onclick 只支持单个事件,会被其他 onclick 事件覆盖,而事件绑定中的点击事件可以添加多个事件而不用担心被覆盖。那么,可想而知,当点击 Id 为 "ul" 的元素时,一定会弹出 10 个弹窗。
如果还是不太明白,那么对代码进行变形之后,就很容易理解了。
其实,上面的那段代码可以变形为以下形式:
- // i=0时
- $('#ul').bind('click',
- function() {
- alert(i)
- })
- // i=1时
- $('#ul').bind('click',
- function() {
- alert(i)
- })
- ......
- // i=10时
- $('#ul').bind('click',
- function() {
- alert(i)
- })
扩展:下面这段代码是对上面的那段原始代码的比较,进一步说明普通事件和事件绑定的区别
- for(var i=0; i<10; i++) {
- document.getElementById('ul').onclick = function() {
- alert(i)
- }
- }
运行结果:弹出一个 10
很显然,当触发点击事件时,会弹出 10 个弹窗。那么,可能又会有疑问?为什么会是 10 个 10 呢?不应该是 0,1,2,3...10 吗?为了解决这个疑惑,可对原始代码进行再次变形:
- var i=0
- $('#ul').bind('click', function() {
- alert(i)
- })
- i=1
- $('#ul').bind('click', function() {
- alert(i)
- })
- ......
- i = 9
- $('#ul').bind('click', function() {
- alert(i)
- })
原始代码,变形为这样之后,很显然,最终 i 的值是 9,但是根据 for 循环的原理,在循环到 i 为 9 之后,会执行 i++,之后再去判断 i<10,此时已不满足条件,所以终止循环,最终 i 值为 10。那么自然也就明白,为什么最终结果是 10 个结果为 10 的弹窗。
总结:这段代码看似简单,却涵盖了事件绑定、普通事件、for 循环等多个知识点。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持 phperz!
来源: http://www.phperz.com/article/17/0524/327104.html