小心事件多次绑定

今天同事让我看一个问题,就是jquery中的on事件的回调函数中引用了外部的一个变量a,但是经过一些操作之后在触发事件回调时候a的变量的值总和预期的不一致,好久没写jquery看了半天也没看出来哪里有问题,后来发现原来绑定的这个on语句在操作的时候会不断被执行,意味着添加了好多次的回调函数,而回调触发的时候就会触发n多次。这就意味着如果每次添加on的时候引用的变量a是不同的话,回调函数多次执行时引用的a的值也就是不同的(这次闭包添了乱orz。。)。 所以呢?结论就是绑定事件时最好进行单次绑定,重复绑定时要小心了,看看业务逻辑是否真的需要这么干,当然上面的解决办法也很简单,先解绑元素之前的事件再添加现有的事件即可。 $().off('change').on('change', function(){}); »

从css3和canvas的旋转说起

之前遇到的一个老问题啦,突然发现又傻傻分不清楚啦。。。来总结一下吧,哈哈。先来说一下,为什么要把这两者放在一起说,先上需求:如何把反着的一张图片弄正,并输出出来呢?也就是我们的目标如图: 这个需求来源于,手机照相机照出的图片其实存起来的时候对于程序显示来说不都是正的,我们自己在手机上浏览看起来是正的是因为手机的程序帮我们搞定啦,可是当我们拿到手机原始图片的时候想展示的时候发现,矣?怎么有的反着的,其实照相机照相的时候会留下照片的方向信息,根据这些方向信息我们就可以把照片调正过来,然后再存到服务器或者展示出来,关于照片里的方向信息大家可以去参考EXIF.js这个库,我总结的信息如下:(EXIF信息有1 8 3 6) »

js加载与执行你分得清楚吗?

今天在和端上app通过异步回调进行js通信时遇到了些执行顺序的问题,然后就发现矣~js的加载和执行到底是怎样的呢?还真不一定能理得很清楚,然后我想哎~~基础真重要啊,不要把自己老是埋在需求里,要慢慢量变到质变吧! 引用一篇博文里的讲述很清楚 js的运行一定要知道的两大特性: 载入后马上执行 执行时会阻塞页面后续的内容(包括页面渲染,其他资源的下载) 所以,如果有多个js文件被引用,那么这些js被串行的载入,并依次执行。因为javascript可能会来操作HTML文档的DOM树,所以,浏览器一般都不会像并行下载css文件并行下载js文件,因为这是js文件的特殊性造成的。所以,如果你的javascript想操作后面的DOM元素,基本上来说,浏览器都会报错说对象找不到。 »

读js红宝书之:栈+队列

js中可以以数组来模拟栈和队里的行为哦,哎~数据结构这东西还是得会用到实际场景中,和算法神马最配哦。。。可是,无奈我还是没什么天赋。。废话不多说,说多了都是泪。。。 1.栈 push()方法:后进 接受任意参数,逐个添加到数组末尾,并返回修改后的数组长度。 pop()方法:先出 从数组末尾移除最后一项,减少length,并返回移除的项。 var colors = ['red', 'blue'] »

读js红包书之:检测数组

一共介绍了三种判断方法: 1.instanceof 判断法 if(value instanceof Array) 缺点:instanceof是根据构造函数来判断的,而且value必须是和Array在同一个全局作用域中,如果一个页面包含多个frame有多个全局作用域的时候就会出现问题。 2.isArray 判断法 if(Array.isArray(value)) 缺点:ES5的方法,旧浏览器不支持 3.toString 判断法 function »