父元素
parent(selecor) --> 直接父元素
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>dom的查询</title>
</head>
<body>
<div>
<ul>
<li>li1</li>
<li>li2</li>
<div>
<span>span1</span>
</div>
<li>li3</li>
<li>li4</li>
<li>li5</li>
<span>span2</span>
</ul>
</div>
<script src="http://code.jquery.com/jquery-3.4.1.js"></script>
<script>
console.log( $('span').parent() )
</script>
</body>
</html>
![v2-5f4cdc84cc71364db9dc35e829a94350_b.jpg](https://img-blog.csdnimg.cn/img_convert/170cf35664c84d552b0750c59150a965.png)
可以传css选择器指定:
console.log( $('span').parent('div') )
![v2-13df6cd5b0ac3bcf17e85df9c791de17_b.jpg](https://img-blog.csdnimg.cn/img_convert/ed78f9627bc0f9c038f79536b9366113.png)
提醒: 在下面的元素中,我已经把ul中的子元素span去掉了。
parents(selecor) --> 祖先元素
console.log( $('span').parents() )
![v2-f132118a0d4f316ad2de0a1c00899047_b.jpg](https://img-blog.csdnimg.cn/img_convert/e3d235e89d565a886a98cdb6e554c63c.png)
默认选择当前元素的所有祖先,传参css选择器可以指定。
closest(selecor|jQuery Object|element) -->最近的selector元素(必选)
选择当前元素的最近的指定父元素(可以越级)。
console.log( $('span').closest('div') )
![v2-9ad99de7628f12f2785c1f604aa642c2_b.jpg](https://img-blog.csdnimg.cn/img_convert/2cbdeb402f7fe7521e1bc971f3b9ec3d.png)
offsetParent() --> 查找最近有定位的附近元素,无参数
console.log( $('span').offsetParent() )
![v2-7e67131d8af437c09da7646a8a10a690_b.jpg](https://img-blog.csdnimg.cn/img_convert/2c5785bc9d826fca50a549bd15178449.png)
子元素
children(selector) --> 找子元素(不包括后代),可传参指定
console.log( $('ul').children() )
console.log( $('ul').children('.item') )
![v2-74e24b29fec8831c0e5f6249226b22e8_b.jpg](https://img-blog.csdnimg.cn/img_convert/651e444ad304769aed6118ba6469341d.png)
find() --> 找后代元素
console.log( $('ul').find('.span1') )
![v2-3d683fa1d527dcdad6cb4816db5b6899_b.jpg](https://img-blog.csdnimg.cn/img_convert/edbd460dcaa3af7346de3b4e4948c17f.png)
我们发现jq对象中还有一个prevObject属性,这是上一级(这里的上级是ul)的节点,由其我们可以在继续调用ul下的子元素
$('ul').find('li:eq(3)').css('color', 'red').prevObject.find('li:eq(2)').css('color', 'blue')
![v2-1ffd233db1ce169e65520786ae769785_b.jpg](https://img-blog.csdnimg.cn/img_convert/04644bb83c5fe377c464db39ea9b9fc7.png)
这个方法已经被封装在end()方法中,可以使用end()操作。
end() --> 回退功能
$('ul').find('li:eq(3)').css('color', 'red').end().find('li:eq(2)').css('color', 'blue').end().find('li:eq(1)').css('color', 'pink')
![v2-d0e520223bbabc66cf3ba9b94f120885_b.jpg](https://img-blog.csdnimg.cn/img_convert/b8c80b3f311b9046cad18a8cf7b02c81.png)
add() --> 同级添加到jq对象中的
可以传select选择器 element元素 jq对象 html
如果我们要写这样两行代码:
$('li:first').css('background', 'orange');
$('li:last').css('background', 'orange');
可以使用add()使用链式方式:
$('li:first').add('li:last').css('background', 'orange');
![v2-3953a45a4dff81d9b60fbacfeab30cff_b.jpg](https://img-blog.csdnimg.cn/img_convert/739ee75d5788f14bc0c7bde49de016ec.png)
addBack() -> 在链式调用的时候返回加上前一个元素。
比如给第二个设置一个样式,第三四个设置一个样式,现在想把第二三四设置另一个样式。
$('li:eq(1)').css('background', 'orange').nextAll().css('background', 'pink').addBack().css('color', '#fff');
![v2-ace25d0b06c14de67a5c736717a11996_b.jpg](https://img-blog.csdnimg.cn/img_convert/ec4fa1da23482f9b20827291dbddb339.png)