html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ToDoList</title>
<link rel="stylesheet" type="text/css" href="ToDoList1.css">
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
</head>
<body>
<div class="ToDoList_page">
<div class="ToDoList_container">
<div id="ToDoList_header">ToDoList:
<input type="text" id="ToDoList_add" value="what do you need">
</div>
<div class="ToDoList_content">待处理事务</div>
<input type='checkbox' id='all_checkbox' >select all
<div id="ToDoList_events">
</div>
<p class="event_count"></p>
</div>
</div> </div>
<script type="text/javascript" src="ToDoList1.js"></script>
</body>
</html>

js

(function(){
'use strict'; var add_list = $("#ToDoList_add");
var event_context =add_list.val();
var ToDoList_events = $("#ToDoList_events");
var allCheckbox=$("#all_checkbox"); var deleteHtml ='<a href="javascript:void(0)" class="event_delete">×</a>';
var i=0;
// 增加事件列表
$("#ToDoList_add").bind("keypress",function(event){
if(event.keyCode===13){
i++;
var events_list = '<div class="events_list" id=list_'+i+'></div>';
var checkboxHtml='<input type="checkbox" class="checkboxList" id=event_'+i+'></input>';
ToDoList_events.append(events_list);
$("#list_"+i).append(checkboxHtml).append(event_context).append(deleteHtml);
// console.log($(".events_list").get(0));
}
});
// 全选和全不选
$("#all_checkbox").bind("click",function(){
if(allCheckbox.prop('checked')){
$(".events_list input").prop("checked",true);
$(".events_list").addClass("addline");
}else{
$(".events_list input").prop("checked",false);
$(".events_list").removeClass("addline");
}
events_count();
});
// 给新增的元素动态绑定事件----事件代理 $("#ToDoList_events").bind("click",function(e){
var eventId=e.target.id;
var isChecked=$("#"+eventId).prop("checked"); var eventsAllLength=$(".events_list").size();
var events_selected=$(".events_list input:checked").size(); if(eventsAllLength ===events_selected){
$("#all_checkbox").prop("checked",true);
}else{
$("#all_checkbox").prop("checked",false);
} if(isChecked){
$("#"+eventId).prop("checked",true);
$("#"+eventId).parent(".events_list").addClass("addline"); }else{
$("#"+eventId).prop("checked",false);
$("#"+eventId).parent(".events_list").removeClass("addline");
}
events_count();
});
// 删除某个事件列表
$("#ToDoList_events").on("click","a",function(){
$(this).parent().remove();
events_count();
}); function events_count(){
var event_length = $("#ToDoList_events input:checked").size();
$(".event_count").html('total:' + event_length + 'selected'); } })();

css

body{
margin: 0px;
padding: 0px;
font-size:14px;
} div .ToDoList_page{
text-align: center;
}
div .ToDoList_container{
width: 500px;
height: 500px;
border: 1px solid black;
padding-top: 5px;
margin-right: auto;
margin-left: auto; }
.events_list .event_delete{
display: none; }
.events_list:hover{
background-color: #cad5eb;
}
.events_list:hover .event_delete{
display: inline-block;
text-decoration: none;
cursor: pointer;
padding: .3em 1em;
} .addline{
text-decoration:line-through;
color:red;
}

jquery实现TODOList的更多相关文章

  1. jQuery模仿ToDoList实现简单的待办事项列表

    功能:在文本框中输入待办事项按下回车后,事项会出现在未完成列表中:点击未完成事项前边的复选框后,该事项会出现在已完成列表中,反之亦然:点击删除按钮会删除该事项:双击事项可以修改事项的内容.待办事项的数 ...

  2. 【jQuery】todolist

    1 2 3 用npm命令下载依赖,优点:不用去网上找链接,代码都一样 4.jQuery自动下载进node_modules文件下 npm install jquery --save  这句命令的意思是保 ...

  3. 通过TodoList案例对比Vue.js的MVVM设计模式与JQuery的MVP设计模式

    Vue MVVM设计模式: 在使用vue进行编程时,不会再涉及到DOM的操作,取而代之的是修改数据层,当把数据进行变更的时候,vue之中它的底层会自动的根据数据的不同帮助我们去重新渲染页面. 编码时不 ...

  4. Node.js + React + MongoDB 实现 TodoList 单页应用

    之前用 Ant Design 开发了一个项目,因此对 React 的特性有了一定的了解,React 使用封装组件的思想,组件各自维护自己的状态和 UI, 组件之间通过 props 传递数据和方法.当状 ...

  5. vue入门 vue与react和Angular的关系和区别

    一.为什么学习vue.js vue.js兼具angular.js和react的优点,并且剔除了他们的缺点 官网:http://cn.vuejs.org/ 手册:http://cn.vuejs.org/ ...

  6. 从零开始学习Vue.js,学习笔记

    一.为什么学习vue.js methods 只有纯粹的数据逻辑,而不是去处理 DOM 事件细节. vue.js兼具angular.js和react的优点,并且剔除了他们的缺点 官网:http://cn ...

  7. MVVM 和 VUE

    一,使用jquery和使用vue的区别 二,对MVVM的理解 三,vue中如何实现响应式 四,vue如何解析模版 五,vue整个实现流程   一,使用jquery和使用vue的区别 jquery实现t ...

  8. Javascript高级面试

    原型 异步 一.什么是单线程,和异步有什么关系 单线程:只有一个线程,同一时间只能做一件事原因:避免DOM渲染的冲突解决方案:异步 为什么js只有一个线程:避免DOM渲染冲突 浏览器需要渲染DOM J ...

  9. Jquery开发&BootStrap 实现“todolist项目”

    作业题目:实现“todolist项目” 作业需求: 基础需求:85%参考链接http://www.todolist.cn/1. 将用户输入添加至待办项2. 可以对todolist进行分类(待办项和已完 ...

随机推荐

  1. JAVA设计模式之工厂方法模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymor ...

  2. sed 命令及shell的if语句的运用实例

    if [ -f /etc/syslog.conf ];     #判断文件是否存在thensystest=`sed -n  '/^auth.info/p' /etc/syslog.conf`;    ...

  3. mac java目录

    /Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home mac java的安装目录为 /Library/Java/JavaVir ...

  4. ios8 滚动事件解放了

    http://developer.telerik.com/featured/scroll-event-change-ios-8-big-deal/ 这是外国人写的一篇文章,我这里直接贴了一个链接,敢兴 ...

  5. 百度地图API示例之添加定位相关控件

    代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...

  6. angular 的ng-view,ngrouter

    通过ng-view和ngRouter控制页面显示内容: html: <body ng-app="AngularStore"> <div class="c ...

  7. 关于新闻,在线编辑器建表时此字段一定要为text

    create table about( content text )engine=myisam default charset=utf8; 项目的各个建表语句 create database day4 ...

  8. a标签鼠标经过,字颜色和下划线的颜色都变红

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. asp.net TreeView控件绑定数据库显示信息

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  10. linux下(Ubuntu、centos)添加永久静态路由的方法

    项目中经常遇到多网卡的服务器,但是一个服务器的默认网关只有一个,当需要在多个网络中访问的时候(特别是在公安.交警等政府项目中),就需要添加静态路由了. 添加静态路由的方法有很多种,下面介绍2种比较常见 ...