📅  最后修改于: 2023-12-03 14:49:42.163000             🧑  作者: Mango
在编写前端代码时,经常会需要使用 jQuery 对 HTML 标签进行遍历以及查找特定的子元素等操作。这里我们来介绍如何使用 jQuery 查找每个部门的所有孩子。
我们先在 HTML 文件中定义如下部门信息数据,以便后续进行 jQuery 查找。
<ul id="org">
<li class="dept" data-dept-id="10001">
<span>研发部</span>
<ul>
<li class="staff" data-staff-id="20001">张三</li>
<li class="staff" data-staff-id="20002">李四</li>
</ul>
</li>
<li class="dept" data-dept-id="10002">
<span>销售部</span>
<ul>
<li class="staff" data-staff-id="20003">王五</li>
<li class="staff" data-staff-id="20004">赵六</li>
</ul>
</li>
<li class="dept" data-dept-id="10003">
<span>财务部</span>
<ul>
<li class="staff" data-staff-id="20005">孙七</li>
</ul>
</li>
</ul>
我们使用 jQuery 中的 children()
方法来查找每个部门的所有孩子,而且由于我们需要查找的是所有孩子元素,所以需要使用 *
通配选择器。
$(document).ready(function() {
$('.dept').each(function() {
var $dept = $(this);
var $children = $dept.find('*');
console.log('dept id: ' + $dept.data('dept-id'));
$children.each(function() {
var $child = $(this);
console.log('staff id: ' + $child.data('staff-id'));
});
});
});
代码解析:
ready()
方法定义了一个回调函数,该函数会在 HTML 文档加载完成后自动执行。each()
方法遍历所有部门,对于每一个部门,我们定义了一个变量 $dept
保存当前部门元素,然后使用 $dept.find('*')
查找当前部门下的所有孩子元素,也就是所有员工元素。each()
方法遍历所有孩子元素 $children
并输出其员工编号。此外,我们也可以将完整示例代码放在一起,如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>查找每个部门的所有孩子</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<ul id="org">
<li class="dept" data-dept-id="10001">
<span>研发部</span>
<ul>
<li class="staff" data-staff-id="20001">张三</li>
<li class="staff" data-staff-id="20002">李四</li>
</ul>
</li>
<li class="dept" data-dept-id="10002">
<span>销售部</span>
<ul>
<li class="staff" data-staff-id="20003">王五</li>
<li class="staff" data-staff-id="20004">赵六</li>
</ul>
</li>
<li class="dept" data-dept-id="10003">
<span>财务部</span>
<ul>
<li class="staff" data-staff-id="20005">孙七</li>
</ul>
</li>
</ul>
<script type="text/javascript">
$(document).ready(function() {
$('.dept').each(function() {
var $dept = $(this);
var $children = $dept.find('*');
console.log('dept id: ' + $dept.data('dept-id'));
$children.each(function() {
var $child = $(this);
console.log('staff id: ' + $child.data('staff-id'));
});
});
});
</script>
</body>
</html>
输出:
dept id: 10001
staff id: 20001
staff id: 20002
dept id: 10002
staff id: 20003
staff id: 20004
dept id: 10003
staff id: 20005