ajax请求数据之后在已经有的数据前面打对勾的方法
今天遇到这么一个需求:
选择一部分人,在点击确定的时候添加到对应的div中,也就是添加到对应的表单下面,当再次查询的时候需要在已经选过的人的复选框前面打伤对勾。
点确定添加到:
再次打开模态框:
也就是对已经选过的数据进行标记,提醒用户已经选过。
思路:
已经选过的人有唯一的标记ID,获取到全部的ID之后组成一个数组,遍历此数组去寻找所有数据中ID相等的,找到前面的复选框打伤对勾。
第一种:一层遍历
拿左边的ID去新查出的数据查找对应元素,找到后打对勾
// 验证已经选择的题,如果为已经选中的打上对勾 function validateCheckedQuestion() { var $leftIds = $(".el_addEPleft").find(".ques_id")// 查到左边隐藏的ID元素 var leftIds = [];// 获取到左边已经选择的试题ID数组 for (var i = 0, length_1 = $leftIds.length; i < length_1; i++) { leftIds[i] = $($leftIds[i]).attr("id"); } // 根据左边的元素与右边查找如果已经选中的话打上对勾 for (var k = 0, length_2 = leftIds.length; k < length_2; k++) { $("#bankQuestions").find("[id='" + leftIds[k] + "']").siblings( ".el_tiku_checkedButton").attr("checked", "true"); } }
第二种:两层遍历
遍历已经选过的,遍历未选过的,相等的就打上对勾。
/** * 校验哪些已经选中,用于判断员工再次选择员工的时候已经选中的checked为选中 1.获取外部已经选中添加到框中的ID数组outEmployeeIds * 2.获取内部多选框集合,判断其value值,如果在outEmployeeIds中能找见将其checked属性设为checked */ var checkOutHasChecked = function() { var outEmployees = $("#department_employee_out").find(".el_empList"); var outEmployeeIds = [];// 标记外面选中的已经ID // 初始化外面ID数组 for (var i = 0, length = outEmployees.length; i < length; i++) { outEmployeeIds[i] = outEmployees[i].id;// 获取到外部的ID } var modalOutEmployees = $("#outEmployeeTable").find(".el_checks");// 查找模态框所有的多选框 for (var k = 0, length_1 = outEmployeeIds.length; k < length_1; k++) { for (var j = 0, length_2 = modalOutEmployees.length; j < length_2; j++) { if (outEmployeeIds[k] == modalOutEmployees[j].value) { modalOutEmployees[j].checked = "checked";// 修改元素的选中属性为选中 break; } } } }
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】