jQuery遍历祖先
在本教程中,您将学习如何使用 jQuery 遍历 DOM 树。
向上遍历 DOM 树
在逻辑关系中,祖先是父母、祖父母、曾祖父母等。
jQuery 提供了有用的方法,例如 parent()
、parents()
和 parentsUntil()
,您可以使用这些方法在 DOM 树中向上遍历 单个或多个级别,以轻松获取层次结构中元素的父级或其他祖先。
jQuery parent()
方法
jQuery parent()
方法用于获取所选元素的直接父级。
下面的示例将通过在文档就绪时添加类 .highlight
来突出显示 <li>
的直接父元素,即 <ul>
。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery parent() Demo</title>
<style>
.highlight{
background: yellow;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function(){
$("li").parent().addClass("highlight");
});
</script>
</head>
<body>
<div class="container">
<h1>Hello World</h1>
<p>This is a <em>simple paragraph</em>.</p>
<ul>
<li>Item One</li>
<li>Item Two</li>
</ul>
</div>
</body>
</html>
jQuery parents()
方法
jQuery parents()
方法用于获取所选元素的祖先。
以下示例将在 <li>
的所有祖先元素(即 <ul>
, <div>
, <body>
和 <html>
元素)周围添加边框。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery parents() Demo</title>
<style>
*{
margin: 10px;
}
.frame{
border: 2px solid green;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function(){
$("li").parents().addClass("frame");
});
</script>
</head>
<body>
<div class="container">
<h1>Hello World</h1>
<p>This is a <em>simple paragraph</em>.</p>
<ul>
<li>Item One</li>
<li>Item Two</li>
</ul>
</div>
</body>
</html>
您可以选择在 parents()
方法中包含一个或多个选择器作为参数,以过滤对祖先的搜索。 下面的示例将在 <li>
的所有祖先(即 <div>
元素)周围应用边框。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery parents() Demo</title>
<style>
*{
margin: 10px;
}
.frame{
border: 2px solid green;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function(){
$("li").parents("div").addClass("frame");
});
</script>
</head>
<body>
<div class="container">
<h1>Hello World</h1>
<p>This is a <em>simple paragraph</em>.</p>
<ul>
<li>Item One</li>
<li>Item Two</li>
</ul>
</div>
</body>
</html>
jQuery parentsUntil()
方法
jQuery parentsUntil()
方法用于获取所有祖先,但不包括选择器匹配的元素。 简单来说,我们可以说它返回 DOM 层次结构中两个给定元素之间的所有祖先元素。
以下示例将围绕 <li>
的所有祖先元素添加边框,不包括 <html>
元素,即为 <ul>
, <div>
和 <body>
元素添加边框。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery parentsUntil() Demo</title>
<style>
*{
margin: 10px;
}
.frame{
border: 2px solid green;
}
</style>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script>
$(document).ready(function(){
$("li").parentsUntil("html").addClass("frame");
});
</script>
</head>
<body>
<div class="container">
<h1>Hello World</h1>
<p>This is a <em>simple paragraph</em>.</p>
<ul>
<li>Item One</li>
<li>Item Two</li>
</ul>
</div>
</body>
</html>
Advertisements