前端简单练习:动态添加和删除行记录
注意点:
1、a标签、表单标签点击后会有默认跳转行为。这个例子中我们不需要跳转,因此最后要return false来取消默认跳转行为
2、this对象存在于响应事件函数中,代表当前正在操作的DOM对象
3、在页面加载后我们要为a链接标签(删除按钮)添加点击事件,另外当我们新添加数据时,也要为a链接标签)添加点击事件。因此可以直接提取出一个函数。这个函数要直接替代点击函数的位置,而不是在点击函数中进行调用 (否则this对象无法使用,除非传参)
4、confirm是JS提供的一个提示确认框,用户点确定返回true,点取消返回false
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文档标题</title>
<style>
#user{
margin: 10px auto;
border: red 2px solid;
}
#mydiv{
border: red 2px solid;
width: 300px;
margin: 0px auto;
text-align: center;
}
a.hover{
background: red;
}
</style>
<script type="text/javascript" src="jquery-3.6.0.js"></script>
<script type="text/javascript">
$(function (){
//用来给a链接绑定单击事件,直接提出来作为单独的函数
//直接将myfun函数作为要绑定事件的响应函数,这样this对象仍然是存在的,自动生成
var myfun = function (){
//获取点击链接所在的行
var $parent = $(this).parent().parent();
//获取用户名
var text = $parent.find("th:first").text();
//confirm是JS提供的一个提示确认框,用户点确定返回true,点取消返回false
if( confirm("你确定要删除"+text) ){
$parent.remove();
}
//取消a标签的默认跳转行为
return false;
}
//return false代表取消默认行为。对表单来说就是取消提交跳转的行为
//点击提交按钮
$("input[type='submit']").click(function (){
//取值要用val,不能用attr
var username = $("input:eq(0)").val();
var email = $("input[type='email']").val();
var salary = $("input[type='number']").val();
//创建HTML元素,并添加进表格中
$newHtml = $("<tr>\n" +
"<th>"+ username + "</th>\n" +
"<th>" + email + "</th>\n" +
"<th>" + salary + "</th>\n" +
"<th><a>删除</a></th>\n" +
"</tr>");
$newHtml.appendTo($("#user"));
//给新添加的a标签绑定点击事件
$newHtml.find("a").click( myfun )
return false;
})
//点击删除按钮
$("a").click( myfun )
})
</script>
</head>
<body>
<table id="user">
<tr>
<th>name</th>
<th>email</th>
<th>salary</th>
<th></th>
</tr>
<tr>
<th>yqb</th>
<th>1111111111@qq.com</th>
<th>100</th>
<th><a>删除</a></th>
</tr>
<tr>
<th>keke</th>
<th>222222222@qq.com</th>
<th>500</th>
<th><a>删除</a></th>
</tr>
</table>
<div id="mydiv">
<h4>添加新成员</h4><br/>
<form method="get">
username:<input type="text" name="username">
<br/>
email:<input type="email" name="email">
<br/>
salary<input type="number" name="salary">
<br/>
<input type="submit">
</form>
</div>
</body>
</html>