• JQuery 中 find() 和 filter() 的区别


     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6     <script type="text/javascript" src="../js/jquery-3.3.1.js"></script> 
     7 </head>
     8 <body>
     9   <div>
    10     <span id="one" class="test-find test-filter">
    11       <li>here is outter
    12           <span id="two" class="test-find test-filter">
    13               <li>here is middle
    14                   <span id="three" class="test-find test-filter">
    15                       <li>here is inner</li>
    16                   </span>
    17               </li>
    18           </span>
    19       </li>
    20     </span>
    21   </div>
    22 
    23   <script>
    24     
    25     /**
    26     * filter: 在当前已经选中的元素当中,选中符合要求的元素
    27     * 假如:当前 $("xxx") 已经选中的 3 个元素 (ele1,ele2,ele3),那么 $("xxx").filter("yyy") 就是
    28     * 在这一共 3 个元素 (ele1,ele2,ele3) 中,选出符合要求的元素(即使全部都符合要求,最多也只有 3 个)
    29     */
    30 
    31     /**
    32     * find: 在当前已经选中的元素当中,按顺序依次取出这些元素,
    33     * 对这些元素当中的每一个的子孙元素都进行遍历,找到符合要求的元素
    34     * 假如:当前 $("xxx") 已经选中的 3 个元素 (ele1,ele2,ele3),那么 $("xxx").find("yyy") 就是
    35     * 依次取出 (ele1,ele2,ele3) 然后对取出的这 3 个元素的所有子孙元素进行遍历,过程类似下面这样:
    36     * 1、遍历 ele1 的所有子孙元素,ele1 中可能包含成千上万个子孙元素,在这成千上万个子孙元素中找到符合要求的元素保存下来
    37     * 2、遍历 ele2 的所有子孙元素,ele2 中可能包含成千上万个子孙元素,在这成千上万个子孙元素中找到符合要求的元素保存下来
    38     * 3、遍历 ele3 的所有子孙元素,ele3 中可能包含成千上万个子孙元素,在这成千上万个子孙元素中找到符合要求的元素保存下来
    39     * 4、将以上步骤 1、2、3 所保存下来的元素整合起来一起返回
    40     */
    41 
    42     /**
    43     * 详情见 js权威指南 章节 19.8
    44     * 注释说明:(x)------》(y): 表示 开始时有x个元素,进过处理后,返回y个元素
    45     */    
    46     
    47     console.log('$("div>span)
    ',$("div>span"));
    48     // 开始时候: 一个元素 span
    49     // 结束时候: 一个元素 span
    50     // 选择div子元素中的span元素, 选中元素 #one ,这一共一个元素: (1)------》(1)
    51     
    52     console.log('$("div>span").find(".test-find")
    ',$("div>span").find(".test-find"));
    53     // 开始时候: 一个元素 span
    54     // 结束时候: 两个元素 #two #three
    55     // 先选择div子元素中的span元素, 选中元素 #one
    56     // 然后在 #one 元素的子孙元素中 选择类名为 .test-find 的元素, 选中元素 #two 和元素 #three ,这一共两个元素: (1)------》(2)
    57 
    58     console.log('$("div>span").find(".test-find").filter("li")
    ',$("div>span").find(".test-find").filter("li"));
    59     // 开始时候: 一个元素 span
    60     // 中间时候:  两个元素 #two #three
    61     // 结束时候: 零个元素 
    62     // 先选择div子元素中的span元素, 选中元素 #one
    63     // 然后在 #one 元素的子孙元素中 选择类名为 .test-find 的元素, 选中元素 #two 和元素 #three
    64     // 最后在 #two 和 #three 这一共两个元素中选择 <li> ,选中 零元素, 因为 #two 和 #three 都是 <span> 元素,所以在<span>中找不到<li> : 1-----》(2)------》(0)
    65 
    66     
    67     console.log('$("div>span)
    ',$("div>span"));
    68     // 开始时候: 一个元素 span
    69     // 结束时候: 一个元素 span
    70     // 选择div子元素中的span元素, 选中 #one 一共一个元素: (1)------》(1)
    71     
    72     console.log($("div>span").filter(".test-filter"));
    73     // 开始时候: 一个元素 span
    74     // 结束时候: 一个元素 #one
    75     // 先选择div子元素中的span元素, 选中元素 #one
    76     // 然后在 #one 这一共一个元素中选择类名为 .test-filter 的元素,选中 #one 一共一个元素:(1)------》(1)
    77     
    78     console.log($("div>span").filter(".test-filter").find("li"));
    79     // 开始时候: 一个元素 span
    80     // 中间时候:  一个元素 #one
    81     // 结束时候: 三个元素 
    82     // 先选择div子元素中的span元素, 选中元素 #one
    83     // 然后在 #one 这一共一个元素中选择类名为 .test-filter 的元素,选中 #one
    84     // 最后在 #one 元素的子孙元素中 选择 <li> ,选中 <li>here is outter</li>、<li>here is middle</li>、<li>here is inner</li> ,这一共三个元素:(1)------》(1)------》(3)
    85 
    86 </script>
    87   
    88 </body>
    89 </html>
    运行结果:
    
    

      

  • 相关阅读:
    抽象类和接口
    truncate,delete和drop的区别
    PLSQL乱码问题
    Linux
    myEclipse闪退
    Java 中 Synchronized 的使用
    工厂模式
    Java中的File,IO流
    jQuery的学习
    C++中的标准模板库STL
  • 原文地址:https://www.cnblogs.com/go4it/p/9677818.html
Copyright © 2020-2023  润新知