使用jQuery开发Todos实录
来源:互联网 发布:js原型链继承面试题 编辑:程序博客网 时间:2024/05/20 21:46
本例是模仿vue.js中todoMVC的功能,使用jQuery进行开发,第一版的jQuery会显得有些混乱,后续将进行优化。
todoMVC具有添加、修改、删除、更改状态、分类等操作todos的功能。我的开发过程分为了以下几个步骤。
- 将整个应用进行功能拆分
- 分别实现每个子功能
- 合并功能
- 优化
具体实现
- 添加todos
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
生成一个tpl_html的模版,然后prepend()反向插入。
- 删除todos
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
这里删除按钮有一个旋转的动画,执行时间是0.2s,所以需要setTimeout()函数来延迟执行删除函数,同时在数组中也将这条todos进行删除。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 更改todos状态
todos事件分为两种状态,一种是正在进行的’todo’,另一种为完成过后的’done’。创建一个数组保存todos的id、状态、和内容。input框回车事件会调用这个todosArrys(),然后传入id和text的值,存入数组当中。i = i + 1;
text = $(event.target).val();
todosArray(i, text);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
每次状态更改,会获取当前checkbox点击事件的对象,通过对数组进行遍历,获取相同id的状态进行更改。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
todos分状态查看
1.ALL 查看全部列表
2.Active 查看正在进行的列表
3.Completed 查看已完成的列表
Active和Completed的实现方式是使用jQuery方法each()去遍历DOM,判断是否包含line这个Class再对DOM进行显示或隐藏。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 每个todos修改功能
想要实现修改功能就需要在每个label标签的上层覆盖一个input标签,当双击label标签时,显示input标签,将label标签的text值传入input的val(),然后回车事件绑定alterTod0()函数,为input再添加hidden样式,同时将修改过后的val()再写回label的text。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
细节优化
1.为toggle-all(全部选定的那个checkbox按钮),添加旋转逻辑
当所有的子checkbox按钮全选or全不选的时候,toggle-all会自动调整自己的体位..咳咳
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
2.无需二次点击Active或Completed按钮,遍历DOM,含有box样式的分类就调用该分类函数。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- todos记数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
有哪些坑
- 点击了每个toggle子checkbox后,无法用toggle-all进行checked状态修改,后来发现jQuery1.6版本后无法使用attr进行checked状态修改,改用prop()。
- 使用prepend()向DOM中插入内容的时候,会将模版显示在上面,所以将模版放在ul标签以外。
- 执行删除DOM节点之前,如果还有删除动画,那么用setTimeout(function(){../你的执行函数},time)延时执行函数。
经验值
- 学会Chrome设置断点进行调试,进行DOM操作的时候,需要明白函数event.target指代什么、this指代什么,因为JS每个函数又同时是对象,所以是可以像其它对象一样被传递,return可以返回一个函数的值。这样可以定义一个变量去接收函数的值。
使用包括JS数组迭代forEach(),jQueryDOM遍历Each(),修改属性attr(),prop(),插入DOM等。
下一步将对jQuery进行重构,结合Handlebars.js 模板引擎来开发第二版。
Github项目链接
阅读全文
0 0
- 使用jQuery开发Todos实录
- 使用jQuery开发Todos实录
- 使用jQuery开发Todos实录
- 学习jquery的 例子todos.
- todos
- 快速了解微信小程序的使用,一个根据小程序的框架开发的todos app
- 快速了解微信小程序的使用,一个根据小程序的框架开发的todos app
- 快速了解微信小程序的使用,一个根据小程序的框架开发的todos app
- 菜菜鸟banner-JQuery处女开发实录----请仔细阅读
- JQuery Ajax Json实录
- rails gem开发实录之cancan的使用
- SSH网站开发实录(8)Ueditor的入门使用
- 开发实录("管理系统")
- J2EE开发全程实录
- J2EE开发全程实录
- MFC gsoap开发实录
- Windows开发实录
- android开发实录
- Hybrid App(混合模式移动应用) Windows系统下开发环境的搭建
- VS2013调用OpenCV实现放大图片
- Mysql5.7版本的下载与安装
- 学习韩顺平校内网项目时遇到的问题及解决方法
- VIM之高亮光标所在的行列
- 使用jQuery开发Todos实录
- 使用Ajax提交数据,进行前后台数据交互
- get&post
- react 创建饼状图
- html学习笔记
- ZooKeeper连接KeeperErrorCode = ConnectionLoss for /eclipse问题,暂无解决办法
- git 命令常用总结
- 单元测试编写
- 修改centos源为阿里云源