js进阶 11-16 jquery如何查找元素的父亲、祖先和子代、后代

js进阶 11-16 jquery如何查找元素的父亲、祖先和子代、后代

一、总结

一句话总结:过滤或者查找的方法里面可以带参数进行进一步的选择。

1、parent()和parents()方法的区别是什么(父亲和祖先)?

parent()找父亲,parents()找祖先

父亲只有一个,所以是单数,祖先就有很多个了,所以是复数

  • parent() 获得当前匹配元素集合中每个元素的父元素,由选择器筛选(可选)。
  • parents() 获得当前匹配元素集合中每个元素的祖先元素,由选择器筛选(可选)。
34                    // $('span').parent('.red').css('border','solid red 2px')
35                    // $('.sp').parents('li').css('border','solid red 2px')

2、parentsUntil()如何使用?

方法的参数里面可以是标签和选择器,和juqery其它方法里面的东西一样

parentsUntil() 获得当前匹配元素集合中每个元素的祖先元素,直到遇到匹配选择器的元素为止。

36                    $('.sp').parentsUntil('.inner').css('border','solid red 2px')

3、children()方法和contents()方法的异同(子代)?

都是找所有子元素,contents()范围更广,包括文本和注释节点

39                    // $('.inner').children('.red').css('border','solid red 2px')

4、jquery中如何查找一个元素的后代(后代)?

find()方法

find() 获得当前匹配元素集合中每个元素的后代,由选择器进行筛选。

40                    $('.main').find('span').css('border','solid red 2px')

二、jquery如何查找元素的父亲、祖先和子代后代

1、相关知识

查找祖先元素


  • parent() 获得当前匹配元素集合中每个元素的父元素,由选择器筛选(可选)。
  • parents() 获得当前匹配元素集合中每个元素的祖先元素,由选择器筛选(可选)。
  • parentsUntil() 获得当前匹配元素集合中每个元素的祖先元素,直到遇到匹配选择器的元素为止。

查找后代元素


  • children() 获得匹配元素集合中每个元素的所有子元素。
  • find() 获得当前匹配元素集合中每个元素的后代,由选择器进行筛选。
  • contents() 获得匹配元素集合中每个元素的子元素,包括文本和注释节点。

    不常用,了解即可

2、代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <style>
 4 </style>
 5 <head>
 6     <meta charset="UTF-8">
 7     <title>演示文档</title>
 8     <script type="text/javascript" src="jquery-3.1.1.min.js"></script>
 9     <style>
10         li{
11             margin-top: 25px;width: 150px;
12         }
13     </style>
14 </style>
15 </head>
16 <body>
17     <ol class="main">
18         <li>1</li>
19         <li class="li2">2
20             <ul class="inner">
21                 <li><span>1</span></li>
22                 <li class="red"><span class="sp">2</span></li>
23                 <li><span>3</span></li>
24             </ul>
25         </li>
26         <li>3</li>
27     </ol>
28     <input id="btn1" type="button" value='查找祖先'>
29     <input id="btn2" type="button" value='查找后代'>
30     <script type="text/javascript">
31         $(function(){
32            $('#btn1').click(function(){
33                    // $('.sp').parent().css('border','solid red 2px')
34                    // $('span').parent('.red').css('border','solid red 2px')
35                    // $('.sp').parents('li').css('border','solid red 2px')
36                    $('.sp').parentsUntil('.inner').css('border','solid red 2px')
37             })
38            $('#btn2').click(function(){
39                    // $('.inner').children('.red').css('border','solid red 2px')
40                    $('.main').find('span').css('border','solid red 2px')
41             })
42         })
43     </script>
44 </body>
45 </html>
 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/9229911.html