分享好友 前端技术首页 频道列表

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

Jquery  2023-03-08 18:260
 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)\n',$("div>span"));
48     // 开始时候: 一个元素 span
49     // 结束时候: 一个元素 span
50     // 选择div子元素中的span元素, 选中元素 #one ,这一共一个元素: (1)------》(1)
51     
52     console.log('$("div>span").find(".test-find")\n',$("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")\n',$("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)\n',$("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>

 

运行结果:
JQuery 中 find() 和 filter() 的区别

 


  

查看更多关于【Jquery】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
邮箱自动提示Jquery 插件-实战.失败品
看到很多 SNS 类网站都有 邮箱注册功能. 参考了一下技术过程,触发事件为 focus keyup 和 后缀 mousedown 事件基本匹配过程就可以完成了. 所以写了下面的代码. 对  万一用户 选择错误.目前很多SNS 站都是要 手动删除后另行选择.我就写一个 focus 替换函数. 

0评论2023-03-08353

JQuery——事件绑定bind和on的区别
引言  通过JQuery对目标对象绑定事件我们大部分都是通过$('选择器').事件名()的形式实现,其实对事件的绑定还可以使用on和bind,为了搞明白两者之间的区别特做记录,以备以后查阅。正文  bind和on都是给元素绑定事件用的,但两者在使用时有些差别,我们最

0评论2023-03-08787

jQuery select操作
获取Select选择的Text和Value:$("#select_id").change(function(){//code...});//为Select添加事件,当选择其中一项时触发var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的Textvar checkValue=$("#select_id").val(); //获

0评论2023-03-08577

17种常用的jQuery全屏焦点图代码 jq 获取焦点
jQuery全屏焦点图特效制作带标题的焦点图切换代码 jQuery背景和banner图片一起切换全屏焦点图切换代码 jQuery仿音悦台网站全屏带标题的焦点图轮播代码 jQuery响应式焦点图插件制作响应式全屏焦点图切换代码 jquery html5响应式幻灯片插件网站响应式全屏幻

0评论2023-03-08612

Jquery 插件 实现浮动层 网页右下弹出层
最近由于公司项目原因要添加一个在网站首页的浮动的弹出层,且比较急,上网大概查找了一下,无奈只能自己动手写了一个。比较简单。源码如下: (function ($) {            $.fn.Messager = function (option) {             

0评论2023-03-08580

Jquery获取服务器端控件的三种方式 js获取服务器地址
一 Jquery获得服务器控件值的方法由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,google了下,总结有以下3种方法:服务器控件代码:asp:TextBox ID="txtUserID" runat="server"/asp:TextBox 1. $("#%=txtUserID.ClientID%"

0评论2023-03-08822

jQuery习题 jquery100例
1.在div元素中,包含了一个span元素,通过has选择器获取div元素中的span元素的语法是?        答:$("div:has(span)"); 2.在ul元素中,添加了多个li元素,通过jquery选择器获取最后一个li元素的方法是?                答:$("li:last")3.在页面中有

0评论2023-03-08817

JQuery的父、子、兄弟节点选择器 jquery获取父节点和子节点
jQuery.parent(expr) //找父元素jQuery.parents(expr)//找到所有祖先元素,不限于父元素jQuery.children(expr)//查找所有子元素,只会找到直接的孩子节点,不会返回所有子孙jQuery.contents()//查找下面的所有内容,包括节点和文本。jQuery.prev()//查找上一

0评论2023-03-08671

一个关于 jquery 和 php 的 jsonp 例子(与后台PHP成功通信)
script $(document).ready(function(){$.ajax({ url:'http://localhost/test/jsonp.php', dataType:"jsonp", //重点,使用jsonp方式解决跨域问题 jsonp:"jsonpcallback", //回调函数名,和php端统一 timeout: 5000, success:function(data, status){ alert('s

0评论2023-03-08838

jQuery委托 jquery事件委托方法
$('#container').on('click', '.elementClass', function() {// code});http://stackoverflow.com/questions/10082031/why-use-jquery-on-instead-of-click

0评论2023-03-08736

更多推荐