在提供的 HTML 和 CSS 的基础上,补充todoList的功能逻辑 (可以使用 jQuery),具体要求以下:html
function newLiText(title){ return( '<li class="task">'+'<p lass="text">'+title+'</p>'+'<span class="close">'+'x'+'</span>'+'</li>' ); } $('#js-add-task').on('click',function(){ var newText=$('#add-task-input').val().trim(); var newLi = newLiText(newText); $('.todoList-content').append(newLi); }); $('.todoList-content').on('click','.task',function(){ $(this).toggleClass('checked'); }); $('.todoList-content').on('click','.close',function(){ var $task = $(this).parent(); $task.remove(); });
官答思路:jquery
taskTpl
来生成任务元素的 HTML 文本参考代码以下:api
var $addTaskInput = $('#add-task-input'); // 输入框元素 var $jsAddTask = $('#js-add-task'); // 添加任务按钮 var $content = $('.todoList-content'); // 任务内容元素 /** * 任务元素 html 模板函数 * @param [String] title 任务标题 */ function taskTpl(title) { return ( '<li class="task">'+ '<p lass="text">' + title + '</p>'+ '<span class="close">x</span>'+ '</li>'); } // 为添加按钮绑定事件 $jsAddTask.on('click', function() { // 获取输入框内容,使用 trim 去除字符串左右两端的空格 var newTaskTitle = $addTaskInput.val().trim(); if (newTaskTitle === '') { return; } var newTaskHtml = taskTpl(newTaskTitle); $content.append(newTaskHtml); }); // 使用事件委托绑定任务元素点击事件 $content.on('click', '.task', function() { // toggle class checked $(this).toggleClass('checked'); }); // 使用事件委托绑定关闭按钮点击事件 $content.on('click', '.close', function() { // 获取关闭按钮的父元素 task var $task = $(this).parent(); // 去除任务元素 $task.remove(); }); 返回练习
更多关于toggleClass(): http://api.jquery.com/toggleClass/app
更多关于trim(): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/Trim函数
更多关于val(): http://www.w3school.com.cn/jquery/attributes_val.aspthis