作业总结:
1 新知识点
.on()方法应用在被选定元素上添加一个或者多个事件
.parents()查找指定元素的祖先元素 可以在括号内指定元素类名,
.prev()查找当前同级元素的上一个元素,括号内不用写内容
.parseInt() 解析一个字符串变量并返回一个整数js的函数
.find() 查找指定元素 比如 .find('.length')
$(document).on() 这个‘组合’是给当前文档 中选择的元素做处理,好处是避免全局其他的相同元素都跟着变化。
2 课程理解
获取并修改输入字数
获取文本框的class名,使用.on方法在.on方法内部使用keyup事件并使用函数。函数体内先获取一下当前文本框内容的长度,并复制给新变量 len。找到当前文本框的祖先元素 .text-box,然后查找到字数计数的元素 .length,使用.text()函数让总字数140减去刚才的存放字数的变量 len 。
回复按钮的事件处理
使用$(document).on是设置当前文档的回复按钮点击的方法。使用prev()找到当前元素(按钮)的同级上一个紧邻的兄弟元素(就是文本框)顺便获取一下内容并赋值给新变量 val。然后if判断一下获取到的val变量是否是空值if(val==0) 如果是空值就弹出警告框,如果不是空值就获取一下当前时间,并且把年月日等组合赋值给变量y。找到每次发布都相同的html代码,在新变量内部进行组合。把获取到的时间变量放到html内的时间标签内,把获取到的内容val变量放到发布的内容区内,最重要的一点是html变量内的值,也就是这些html代码之间不能有换行、空格,必须紧挨着放在一起。
然后使用$(this).parents('.box').find('.comment-list').append(html),这句话的意思是查找到当前元素的祖先级元素 .box 然后从祖先级元素往下找,找到'.comment-list',在这个元素的最后面添加上修改组合后的变量 html。
发布之后要清空输入框,同样是找到当前元素的祖先级元素 '.box' ,然后再使用find找到子元素'.comment' 使用val('')让内容为空(就是输入的文本框)
发布之后要初始化输入的字数,同样是找到当前元素的祖先级元素 '.box',然后使用find找到子元素 .length,使用 .text('0') 让输入字数为0。
设置一下输入框的高度,当前元素,也就是点击按钮的同级上一个元素(输入框)$(this).prev().height(20)
删除评论
使用$(document).on('click','.comment-operate'),当前文本.comment-operate元素被点击的时候执行函数。如果if(confirm('确定删除吗')),这个if里面的是一个弹窗,确定表示为真,否为假。如果确定删除就执行找到当前元素的诛仙元素.comment-box,使用remove移出。
给评论框加高度
使用$(document).on('click','.comment',function(){})当文档中的元素被点击的时候,这个元素的高度增加80像素
$(document).on('click','.comment',function(){$(this).height(80)})
点赞功能
使用$(document).on('click','.comment-praise',function(){}),在点击文档中的当前元素后执行函数,使用字符串转增数的函数parseInt把当前元素里的total值 +1 转整后赋值给变量 num,也就是$num = parseInt($(this).attr('total'))+1;使用 $(this).attr('total',num)修改当前的标签内total的值为获取到的num变量值。使用$(this).html(num+'赞'),刚才修改完标签内的total值后还需要修改前端的元素内容,让赞前面显示数字,数字就使用num。
删除动态(作业)
使用$(document).on('click','.close'function(){})当点击当前文档里的'.close'元素后执行函数,函数体内是找到当前元素的祖先级元素.box,然后使用 .remove()进行删除。
实例
<!DOCTYPE html> <html> <head> <title>评论功能练习</title> <meta charset="utf-8"> <link rel="icon" type="image/x-icon" href="static/images/logo.png"> <link rel="stylesheet" type="text/css" href="static/style.css"> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> </head> <body> <div id="list"> <div class="box clearfix"> <!-- 删除说说按钮 close--> <a class="close" href="javascript:;">×</a> <img class="head" src="static/images/1.png" alt=""> <div class="content"> <div class="main"> <p class="txt"> <span class="user">西门大官人: </span> ~ All the luck is for you. ~ </p> <img class="pic" src="static/images/img1.jpg" alt=""> </div> <div class="info clearfix"> <span class="time">02-14 23:01</span> <!-- 给说说点赞 praise --> <a class="praise" href="javascript:;">赞</a> </div> <div class="praises-total" total="4" style="display: block;">4个人觉得很赞</div> <!--评论内容--> <div class="comment-list"> <!-- 每次评论要添加的内容跟标签 --> <div class="comment-box clearfix" user="self"> <img class="myhead" src="static/images/4.jpg" alt=""> <div class="comment-content"> <p class="comment-text"><span class="user">我:</span>你说的都对……</p> <p class="comment-time"> 2019-01-19 14:36 <a href="javascript:;" class="comment-praise" total="1" my="0" style="display: inline-block">1赞</a> <a href="javascript:;" class="comment-operate">删除</a> </p> </div> </div> <!--添加结束--> </div> <!--评论内容结束--> <div class="text-box"> <textarea class="comment" placeholder="评论…"></textarea> <button class="btn">回 复</button> <span class="word"><span class="length">0</span>/140</span> </div> </div> </div> <div class="box clearfix"> <a class="close" href="javascript:;">×</a> <img class="head" src="static/images/2.jpg" alt=""/> <div class="content"> <div class="main"> <p class="txt"> <span class="user">欧阳克 : </span>三亚的海滩很漂亮。 </p> <img class="pic" src="static/images/img5.jpg" alt=""/> </div> <div class="info clearfix"> <span class="time">02-14 23:01</span> <a class="praise" href="javascript:;">赞</a> </div> <div class="praises-total" total="0" style="display: none;"></div> <div class="comment-list"> <div class="comment-box clearfix" user="other"> <img class="myhead" src="static/images/3.png" alt=""> <div class="comment-content"> <p class="comment-text"><span class="user">韦小宝:</span>我也想去三亚。</p> <p class="comment-time"> 2019-01-19 14:36 <a href="javascript:;" class="comment-praise" total="0" my="0">赞</a> <a href="javascript:;" class="comment-operate">删除</a> </p> </div> </div> </div> <div class="text-box"> <textarea class="comment" placeholder="评论…"></textarea> <button class="btn">回 复</button> <span class="word"><span class="length">0</span>/140</span> </div> </div> </div> </div> <script type="text/javascript"> // on()方法可以在被选元素及子元素上添加一个或者多个事件处理程序 绑定事件 动态绑定 // keyup 是jq的键盘事件 $(function(){ // $('.length').css('color','red') $('.comment').on('keyup',function(){ // 获取当前comment内部的值和长度值 var len = $(this).val().length; // 先获取一下当前元素的父级元素是否是.text-box,然后再找子孙元素.length 再使用text 使用总长度减去获取的长度 $(this).parents('.text-box').find('.length').text(140-len) }) // 获得当前页面文档中的回复按钮 // 在文档中绑定一个click给btn按钮并给一个函数 $(document).on('click','.btn',function(){ // .prev()紧邻同级前一个同胞元素 然后获得内部的内容 var val = $(this).prev().val() if(val==''){ alert('内容为空') }else{ // 获取当前日期 时间 var date = new Date(); var y = date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate()+' '+date.getHours()+':'+date.getMinutes()+':'+date.getSeconds(); // console.log(y) var html = '<div class="comment-box clearfix" user="self"><img class="myhead" src="static/images/4.jpg" alt=""><div class="comment-content"><p class="comment-text"><span class="user">我:</span>'+val+'</p><p class="comment-time">'+y+'<a href="javascript:;" class="comment-praise" total="1" my="0" style="display: inline-block">1赞</a><a href="javascript:;" class="comment-operate">删除</a></p></div></div>' // 添加评论 $(this).parents('.box').find('.comment-list').append(html); // 清空输入框 $(this).parents('.box').find('.comment').val(''); // 初始化输入字数 $(this).parents('.box').find('.length').text('0'); // 输入完之后初始化高度 $(this).prev().height(20) // $('.comment-list') } }) // 动态删除 如果不用document 只能删除第一个 // $('.comment-operate').on('click',function(){ // if(confirm('确定删除吗')){ // // 这个父级 .comment-box 删除 // $(this).parents('.comment-box').remove() // } // }) $(document).on('click','.comment-operate',function(){ if(confirm('确定删除吗')){ // 这个父级 .comment-box 删除 $(this).parents('.comment-box').remove() } }) // 给评论框加高度 $(document).on('click','.comment',function(){ // 增加评论框高度是80 $(this).height(80) }) // 给评论点赞 $(document).on('click','.comment-praise',function(){ // 获得当前元素内部的属性 parseInt是转换成数字 var num = parseInt($(this).attr('total'))+1; $(this).attr('total',num); // 把数字再转换成文字 $(this).html(num+'赞') }) $(document).on('click','.praise',function(){ // 获得当前元素内部的属性 parseInt是转换成数字 $(this).attr('total','0'); var num = parseInt($(this).attr('total'))+1; $(this).attr('total',num); // 把数字再转换成文字 $(this).html(num+'赞') }) }) </script> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例