020_遍历祖先

1. parent()方法

1.1. parent()方法获得当前匹配元素集合中每个元素的父元素, 沿DOM树向上遍历单一层级。

1.2. parent()方法接受可选的选择器表达式, 与我们向$()函数中传递的参数类型相同。如果应用这个选择器, 则将通过检测元素是否匹配该选择器对元素进行筛选。

1.3. 语法

$(selector).parent()
$(selector).parent(selector)

1.4. 参数

1.5. 例子

1.5.1. 代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>parent()方法</title>
		
		<script type="text/javascript" src="jquery.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
				$('#btn1').click(function(){
					$("span").parent().css('background-color', 'blue');
				});
				$('#btn2').click(function(){
					$("span").parent('.myP').css('background-color', 'green');
				});
			});
		</script>
		<style type="text/css">
			#myDiv {background-color: yellow; width: 600px; height: 300px;}
			#myDiv div {background-color: pink; width: 500px; height: 100px; margin: 0 auto;}
			#myDiv p {background-color: red; padding: 10px;}
		</style>
	</head>
	<body>
		<div id="myDiv">
			<div>
				<p><span>parent()方法获得当前匹配元素集合中每个元素的父元素, 沿DOM树向上遍历单一层级。</span></p>
			</div>
			<div>
				<p class="myP">
					<span>parent()方法接受可选的选择器表达式, 与我们向$()函数中传递的参数类型相同。如果应用这个选择器, 则将通过检测元素是否匹配该选择器对元素进行筛选。</span>
				</p>
			</div>
		</div><br />
		<button id="btn1">父元素</button> <button id="btn2">过滤的父元素</button>
	</body>
</html>

1.5.2. 效果图

2. parents()方法

2.1. parents()方法获得当前匹配元素集合中每个元素的祖先元素, 它一路向上直到文档的根元素(<html>)。

2.2. parents()方法接受可选的选择器表达式, 与我们向$()函数中传递的参数类型相同。如果应用这个选择器, 则将通过检测元素是否匹配该选择器对元素进行筛选。

2.3. 语法

$(selector).parents()
$(selector).parents(selector)

2.4. 参数

2.5. 例子

2.5.1. 代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>parents()方法</title>

		<script type="text/javascript" src="jquery.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
				$('#btn1').click(function(){
					$("b").parents().css({"color":"red","border":"2px solid red"});
				});
				$('#btn2').click(function(){
					$("b").parents('.myUl').css({"color":"red","border":"2px solid red"});
				});
			});
		</script>
		<style type="text/css">
			.ancestors div
			{
				width: 500px; 
				float: left;
			}
			.ancestors div, .ancestors div *
			{ 
				display: block;
				border: 2px solid lightgrey;
				color: lightgrey;
				padding: 5px;
				margin: 15px;
			}
		</style>
	</head>
	<body class="ancestors"> 
		<span style="display: block;">body(曾曾祖父)</span>
  		<div>div(曾祖父)
		    <ul class="myUl">ul(祖父)  
		    	<li>li(直接父)
		        	<b>b元素</b>
		      	</li>
		    </ul>   
  		</div>
  		<div>div(曾祖父)
		    <ul class="myUl">ul(祖父)  
		    	<li>li(直接父)
		        	<b>b元素</b>
		      	</li>
		    </ul>   
  		</div>
  		<span style="display: block; clear: left;">
  			<button id="btn1">祖先元素</button> <button id="btn2">过滤的祖先元素</button>
  		</span>
	</body>
</html>

2.5.2. 效果图

3. parentsUntil()方法

3.1. parentsUntil()方法返回当前匹配元素集合中每个元素的祖先元素, 是介于两个给定元素之间的元素, 直到(但不包括)被选择器、DOM节点或jQuery对象匹配的元素。

3.2. 语法 1

$(selector).parentsUntil(selector,filter)

3.3. 参数

3.4. 语法 2

$(selector).parentsUntil(element,filter)

3.5. 参数

3.6. 如果不匹配或未应用选择器或对象(selector或element), 则将选区所有祖先元素; 在这种情况下, 该方法选取的元素与未提供选择器时的parents()方法相同。

3.7. 该方法接受可选的选择器表达式作为其第二参数。如果应用这个参数, 则将通过检测元素是否匹配该选择器对元素进行筛选。

3.8. 例子

3.8.1. 代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>parentsUntil()方法</title>
		
		<script type="text/javascript" src="jquery.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
				$('#btn1').click(function(){
					$("b").parentsUntil('div').css({"color":"red","border":"2px solid red"});
				});
				$('#btn2').click(function(){
					$("b").parentsUntil('div', '.myUl').css({"color":"red","border":"2px solid red"});
				});
				$('#btn3').click(function(){
					$("b").parentsUntil($('div')).css({"color":"red","border":"2px solid red"});
				});
				$('#btn4').click(function(){
					$("b").parentsUntil($('div'), '.myUl').css({"color":"red","border":"2px solid red"});
				});
				$('#btn5').click(function(){
					$("b").parentsUntil(document.getElementsByTagName('div')).css({"color":"red","border":"2px solid red"});
				});
				$('#btn6').click(function(){
					$("b").parentsUntil(document.getElementsByTagName('div'), '.myUl').css({"color":"red","border":"2px solid red"});
				});
				$('#btn7').click(function(){
					$("b").parents().css({"color":"red","border":"2px solid red"});
				});
			});
		</script>
		<style type="text/css">
			.ancestors div
			{
				width: 500px; 
				float: left;
			}
			.ancestors div, .ancestors div *
			{ 
				display: block;
				border: 2px solid lightgrey;
				color: lightgrey;
				padding: 5px;
				margin: 15px;
			}
		</style>
	</head>
	<body class="ancestors"> 
		<span style="display: block;">body(曾曾祖父)</span>
  		<div>div(曾祖父)
		    <ul class="myUl">ul(祖父)  
		    	<li>li(直接父)
		        	<b>b元素</b>
		      	</li>
		    </ul>   
  		</div>
  		<div>div(曾祖父)
		    <ul class="myUl">ul(祖父)  
		    	<li>li(直接父)
		        	<b>b元素</b>
		      	</li>
		    </ul>   
  		</div>
  		<span style="display: block; clear: left;">
  			<button id="btn1">祖先父元素(选择器表达式)</button> <button id="btn2">过滤的祖先元素(选择器表达式)</button>
  			<button id="btn3">祖先父元素(jQuery对象)</button> <button id="btn4">过滤的祖先元素(jQuery对象)</button>
  			<button id="btn5">祖先父元素(DOM对象)</button> <button id="btn6">过滤的祖先元素(DOM对象)</button>
  			<button id="btn7">未应用选择器</button>
  		</span>
	</body>
</html>

3.8.2. 效果图

4. offsetParent()方法

4.1. offsetParent()方法返回最近的祖先定位元素。

4.2. 定位元素指的是元素的CSS position属性被设置为relative、absolute或fixed的元素。

4.3. 语法

$(selector).offsetParent()

4.4. 例子

4.4.1. 代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>offsetParent()方法</title>
		
		<script type="text/javascript" src="jquery.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
				$('#btn1').click(function(){
					var x = $("span").offsetParent();
    				alert("span最近的祖先定位元素名称: " + x[0].tagName);
				});
			});
		</script>
		<style type="text/css">
			* {margin: 0; padding: 0;}
			div {
				width: 600px;
				height: 200px;
				background: red;
				/*同时注释掉p和div的定位, 运行返回HTML*/
				position: relative;
			}
			p {
				background: pink;
				width: 300px;
				height: 100px;
				/*可以尝试注释掉p的定位, 运行返回DIV*/
				position: absolute;
				top: 30px;
				left: 50px;
			}
		</style>
	</head>
	<body>
		<div><p><span>offsetParent()方法返回最近的祖先定位元素。</span></p>	</div>
		<br /><button id="btn1">最近的祖先定位元素</button>
	</body>
</html>

4.4.2. 效果图

5. closest()方法

closest()方法获得匹配选择器的第一个祖先元素, 从当前元素开始沿DOM树向上。

5.1. 语法

$(selector).closest(selector)

5.2. 参数

5.3. 详细说明

5.3.1. 如果给定表示DOM元素集合的jQuery对象, .closest()方法允许我们检索DOM树中的这些元素以及它们的祖先元素, 并用匹配元素构造新的jQuery对象。.parents()和.closest()方法类似, 它们都沿DOM树向上遍历。两者之间的差异尽管微妙, 却很重要:

5.4. 例子

5.4.1. 代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>closest()方法</title>

		<script type="text/javascript" src="jquery.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
				$('#btn1').click(function(){
					$("b").closest('li b').css({"color":"red","border":"2px solid red"});
				});
				$('#btn2').click(function(){
					$("b").closest('.myUl').css({"color":"red","border":"2px solid red"});
				});
			});
		</script>
		<style type="text/css">
			.ancestors div
			{
				width: 500px; 
				float: left;
			}
			.ancestors div, .ancestors div *
			{ 
				display: block;
				border: 2px solid lightgrey;
				color: lightgrey;
				padding: 5px;
				margin: 15px;
			}
		</style>
	</head>
	<body class="ancestors"> 
		<span style="display: block;">body(曾曾祖父)</span>
  		<div>div(曾祖父)
		    <ul class="myUl">ul(祖父)  
		    	<li class="myLi">li(直接父)
		        	<b>b元素</b>
		      	</li>
		    </ul>   
  		</div>
  		<div>div(曾祖父)
		    <ul class="myUl">ul(祖父)  
		    	<li>li(直接父)
		        	<b>b元素</b>
		      	</li>
		    </ul>   
  		</div>
  		<span style="display: block; clear: left;">
  			<button id="btn1">祖先元素(包含自身)</button> <button id="btn2">过滤的祖先元素</button>
  		</span>
	</body>
</html>

5.4.2. 效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值