编程血泪史之前端

2016.3.18
绑定函数在同类事件之前执行
  在优化前端性能时,突发奇想,想对不常使用的控件先不加载数据,在需要时再获取数据。比如,对于一个表格的过滤框、一些需要从后台取固定参数的选项框,在页面加载时不获取数据,当点击时再获取。
  当然,这是一个得不偿失的改进,因为本来对于页面上这些框数据,就是使用ajax异步获取的。砍掉异步,在用户点击时去获取数据,那在数据还没回来时怎么展示?显示空白,还是改同步,锁死页面让用户干等着?这种策略本身不可取,权当教训了。但在考虑实现时,有一点让人感兴趣,点击事件已经存在,如何在同一个dom上新增一个点击事件,且该事件在所有同类事件之前执行?
  jQuery1.8之前,使用$.data($('#id')[0],'events').click来获取所有id为id的dom上绑定的click事件,这是一个数组,按绑定先后顺序执行,所以直接绑定函数,默认是在最后执行,当然,可以直接调整数组中元素(回调函数)的位置来改变函数执行的顺序。jQuery1.8之后使用$._data($('#id')[0],'events').click获取。
  
2016.3.19
累加事件——多次绑定回调函数
  使用SlickGrid绘制表格,发现刷新一次,表格的每条记录都会累加,比上次绘制多画几次,多画的次数为表格的记录总数。比如,表格中有2条记录,第一次每一条记录被重画2次;刷新并重新获取数据后每条记录被重画4次,然后是6,8,10…不断累加。
  最初怀疑是数据源dataview的setItems函数中内置重绘,测试后排除。
  怀疑获取数据的回调函数被绑定多次,设置断定,打日志后发现只调用了一次。
  最后发现是使用的update函数有问题,此函数为内部封装的函数,实际作用是给数据源绑定一个监听函数,当数据源的数据变化时会调用此函数,而在代码中使用时却将它作为一个即时的更新函数,每次更新都调用此函数,绑定监听事件,所以会累积的越来越多。可以参考jQuery的bind方法来理解。从中也可以看到普及文档的重要性!乱用函数就是浪费生命,团体杀手!

2016.3.19
页面的返回按钮
  做了一个需求,两个页面都会跳转到同一个子页面,在子页面中返回按钮需返回到进入的页面。
  首先,window.history.back被排除,因为作为一个有追求的程序员,怎么能用这么low的方式,万一人家复制url后,新开一个窗口,再点击一下回退,那不就傻逼了。
  思前想后,最后决定在url上做文章,#viewA&common 与#viewB&common指向同一个页面,#与&之间就是前一个页面的地址,返回时通过window.location.hash取值,以此来跳转。简直是天才,坐等测试童鞋发现什么惊天的bug……
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值