JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 ...
本来想着直接通过js代码来点击事件时让div的宽度变化然后写了如下的代码 但是无论如何点击都一下子显示完全部的宽度 然后网上通过很久查找网上的资料改成如下: 就能够显示出我想要的效果了 纵观这样的代码现象,才明白是因为闭包的问题,上图中的变量i直接引用了父函数中的i,所以在循环结束后才将最终的值传给了 子函数,而下图则只是引用了父函数中的i的值, ...
2017-03-20 19:54 0 2661 推荐指数:
JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 ...
首先看这段代码: 这段代码如果不仔细看的话会误以为三个按钮点击结果分别为0,1,2。但是运行结果却是3,3,3。 我们来分析一下代码执行过程:前三遍循环分别给按钮0,1,2绑定了alert(i)的事件,第四遍循环开始时i=3,不符合i<=2的条件 ...
js循环绑定事件 在js中,用循环来为一个元素队列的元素绑定事件,是一个常见的问题。 通常进入误区的新人,都会理想当然地这么写代码: (假设元素队列为o,默认使用jQuery) //error method var o =$('.blockHead'); for(var i ...
其实函数引用的外部变量都是最后一次的值。 再来看一个例子: 如果你知道作用域链就好办多了,在这个函数里面的i其实引用的是最后一次i的值,为什么不是1,2,3,4...呢?因为在你for循环的时候,你并没有执行这个函数,你这个函数是在你点击的时候才执行的,当执行 ...
一、问题场景: 绑定事件有一个坑----总是绑定最后一个元素 二、解决: 1、第一种 第一种方法:编写一个function,在这个function中返回一个函数 : 其中.get(0)指的是将jQuery对象转为DOM对象。 ...
在编写JS的时候我们经常会遇到要对一系列元素进行事件绑定,循环对元素的事件进行赋值,在这个过程中我们会遇到一个问题,那就每个元素事件运行的时候变量怎么都是相同的值。 这里涉及到变量的作用域的问题,可以用闭包来解决这个问题。 这里举个简单的列子来说明: <ul id="ulDemo ...
碰到一道题: for(var i=0;i<2;i++){ setTimeout(function(){ console.log(i); },100) } //输出结果为:2 2 fo ...