效果图
实现的功能
- 点击发布能把评论在下方滑出来
- 点击删除可以先把评论向上滑动隐藏再删除
代码讲解
- 点击发布能把评论在下方滑出来
// 点击发布按钮发布评论
$('.btn').click(function () {
var li = $('<li></li>');
li.html($('textarea').val() + '<a href="javascript:;">删除</a>');
$('ol').prepend(li);
// 先把li设成display:none,这样才能用slideDown滑出来
$('ol li').slideDown();
$('textarea').val('');
})
- 点击删除可以先把评论向上滑动隐藏再删除
注意:这里点击li里面的a不能写成这样:
$('ol li a').click(function () {
$(this).parent().slideUp(function () {
// $(element).remove()删除本身和孩子
$(this).remove();
})
})
这样写的话点击a标签后还是不能删除li。因为li是动态创建的,给元素简单监听删除动态创建的元素是不可行的。正确的方法是用on,on绑定事件可以给未来动态创建的元素绑定事件。
$('ol').on('click', 'a', function () {
//函数体里面的this指的是a标签
$(this).parent().slideUp(function () {
//在回调函数里把li删除
$(this).remove();
});
})
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<style>
body,
html {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.box {
text-align: center;
width: 500px;
margin: 100px auto;
border: 1px solid gray;
padding-bottom: 15px;
}
ol {
width: 60%;
}
ol li {
width: 100%;
height: 25px;
line-height: 25px;
border-bottom: 1px solid rgb(177, 116, 116);
display: none;
list-style: none;
}
ol li a {
float: right;
}
</style>
</head>
<body>
<div class="box">
<div class="title">微博发布</div>
<textarea name="" id="" cols="30" rows="10"></textarea>
<button class="btn">发布</button>
<ol></ol>
</div>
<script>
$(function () {
// 点击发布按钮发布评论
$('.btn').click(function () {
var li = $('<li></li>');
li.html($('textarea').val() + '<a href="javascript:;">删除</a>');
$('ol').prepend(li);
// 先把li设成display:none,这样才能用slideDown滑出来
$('ol li').slideDown();
$('textarea').val('');
})
// 点击删除按钮删除评论
$('ol').on('click', 'a', function () {
//函数体里面的this指的是a标签
$(this).parent().slideUp(function () {
$(this).remove();
});
})
})
</script>
</body>
</html>