注意在目前了解到的所有的js操作中:
//只有下面的方法,查找有 点+类名 ,比如【.edit-btn】 这个算标签内的自定义属性
//其他地方,查找类名,都不需要添加 . 号 【原因就是 . 代表查找同类名的所有元素 】
$(document).on("click",".edit-btn",function(){ });
一、单个删除
1、前端代码
// delete-btn 这个是在一开始展示表格信息的时候,就已经添加了。 $(document).on("click",".delete-btn",function(){ //弹出是否确认删除对话框 //alert($(this).parents("tr").find("td:eq(1)").text()); var empName = $(this).parents("tr").find("td:eq(1)").text() var empId = $(this).attr("delete-id"); if(confirm("确认删除【"+empName+"】")){ $.ajax({ url:"${APP_PATH}/emp/"+empId, type:"delete", success:function(result){ alert(result.msg); to_page(g_currentPage); } }); } });
2、后端代码
EmployeeController.java
@ResponseBody @RequestMapping(value="/emp/{id}",method=RequestMethod.DELETE) public Msg deleteByEmpId(@PathVariable("id") int id){ employeeService.deleteEmp(id); return Msg.success(); }
EmployeeService.java
/** * 根据id 删除用户 * @param id */ public void deleteEmp(int id) { // TODO Auto-generated method stub employeeMapper.deleteByPrimaryKey(id); }
二、批量删除
1、前端代码
(1)添加checkbox 勾选功能
<!-- 显示表格数据 --> <div class="row"> <div class="col-md-12"> <table class="table table-hover" id="emps_table"> <thead> <tr> <th> <input type="checkbox" id="check_all" /></th> <th>#</th> <th>empName</th> <th>gender</th> <th>email</th> <th>deptName</th> <th>操作</th> </tr> </thead> <tbody> </tbody> </table> </div> </div>
function build_emps_table(result) { //清空table表格,如果不请空,下一次请求时,数据会在原来的基础上,不断添加。 $("#emps_table tbody").empty(); var emps = result.extend.pageInfo.list; $.each(emps, function(index, item) { //alert(item.empName); //构建单元格 var checkBoxTd = $("<td><input type='checkbox' class='check-item' /></td>"); var empIdTd = $("<td></td>").append(item.empId); var empNameTd = $("<td></td>").append(item.empName); var genderTd = $("<td></td>").append(item.gender=='M'?"男":"女"); var emailTd = $("<td></td>").append(item.email); var deptNameTd = $("<td></td>").append(item.department.deptName); /** <button class="btn btn-primary btn-sm"> <i class="icon-edit icon-large"></i> 编辑 </button> <button class="btn btn-danger btn-sm"> <i class="icon-trash icon-large"></i> 删除 </button> **/ var editBtn = $("<button></button>").addClass("btn btn-primary btn-sm edit-btn") .append($("<i></i>").addClass("icon-edit icon-large")).append(" 编辑"); //为编辑按钮添加一个自定义的属性,来表示当前员工id editBtn.attr("edit-id",item.empId); var delBtn = $("<button></button>").addClass("btn btn-danger btn-sm delete-btn") .append($("<i></i>").addClass("icon-trash icon-large")).append(" 删除"); //为删除按钮添加一个自定义的属性来表示当前删除的员工id delBtn.attr("delete-id",item.empId); var btnTd = $("<td></td>").append(editBtn).append(" ").append(delBtn); //append方法执行完成以后还是返回原来的元素 $("<tr></tr>") .append(checkBoxTd) .append(empIdTd) .append(empNameTd) .append(genderTd) .append(emailTd) .append(deptNameTd) //.append(editBtn) //.append(delBtn) .append(btnTd) .appendTo("#emps_table tbody"); }); }
(2)添加勾选逻辑
//完成全选、全不选功能 $("#check_all").click(function(){ /*** //获取id为p的标签的属性值 $('#p').attr('class') //如果存在就是修改,如果不存在就是添加 $('#p').attr('class','red') // 删除某个属性 $('#p').removeAttr('name') //添加class名称 $('#p').addClass('blue') //删除class名称 $('#p').removeClass('yellow') //有class就删除 没有就添加 $('#p').toggleClass('asdf') //val()获取输入框内容 var s = $('input[name="user"]').val() ***/ // attr获取checked是undefined; // alert($(this).attr("checked")); 弹出的是 undefined // 用prop修改和读取dom原生属性的值;用attr获取自定义属性的值;这样就不容易出错 // alert($(this).prop("checked")); // 可以正常弹出结果,也就是说:$(this).prop("checked") 返回是否选中的 true or false // 设置 是否 checked $(this).prop("checked",true/false) //设置全选和全不选 $(".check-item").prop("checked",$(this).prop("checked")); }); //check_item 触发回调函数 $(document).on("click",".check-item",function(){ //判断当前选择中的元素是否5个 var flag = $(".check-item:checked").length==$(".check-item").length; $("#check_all").prop("checked",flag); }); //点击全部删除,就是批量删除 $("#emp_delete_all_btn").click(function(){ var empNames =""; //组织员工id字符串 var delete_ids_str=""; $.each($(".check-item:checked"),function(){ empNames = empNames+$(this).parents("tr").find("td:eq(2)").text() +","; delete_ids_str += $(this).parents("tr").find("td:eq(1)").text() +"-"; }); //去除empNames多余的, empNames = empNames.substring(0,empNames.length-1); //去除删除的id的多余的- delete_ids_str = delete_ids_str.substring(0,delete_ids_str.length-1); if(confirm("确认删除【"+empNames+"】?")){ //发送ajax请求 $.ajax({ url:"${APP_PATH}/emp/"+delete_ids_str, type:"delete", success:function(result){ alert(result.msg); to_page(g_currentPage); } }); } });
(3)后端处理逻辑
EmployeeController.java
/** * 单个、批量 删除二合一, * 批量删除 1-2-3 * 单个删除 1 * * @param ids * @return */ @ResponseBody @RequestMapping(value="/emp/{ids}",method=RequestMethod.DELETE) public Msg deleteByEmpId(@PathVariable("ids") String ids){ //批量删除 if(ids.contains("-")){ List<Integer> delete_id = new ArrayList<>() ; String[] str_ids = ids.split("-"); for (String str :str_ids) { delete_id.add(Integer.parseInt(str)); } employeeService.deleteBatch(delete_id); }else{ int id = Integer.parseInt(ids); employeeService.deleteEmp(id); } return Msg.success(); }
EmployeeService.java
/** * * @param ids */ public void deleteBatch(List<Integer> ids) { // TODO Auto-generated method stub EmployeeExample example = new EmployeeExample(); Criteria criteria = example.createCriteria(); //delete from xxx where emp_id in (1,2,3) criteria.andEmpIdIn(ids); employeeMapper.deleteByExample(example); }