位置: 编程技术 - 正文

Jquery 1.9.1源码分析系列(十二)之筛选操作(jquery animate源码)

编辑:rootadmin

推荐整理分享Jquery 1.9.1源码分析系列(十二)之筛选操作(jquery animate源码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:jquery源码实现原理,jquery.min.js源代码,jquery源码实现原理,jquery.min.js源代码,jquery源码分析,jquery源码实现原理,jquery源码是什么水平,jquery源码分析,内容如对您有帮助,希望把文章链接给更多的朋友!

废话不多说了直接奔入主题了。

  find接受一个参数表达式selector:选择器(字符串)、DOM元素(Element)、jQuery对象。分两种情况处理:

  第一种,如果传入的参数是非字符串,则先通过jQuery选择器将selector查找出来,然后过滤出包含于当前jQuery对象所匹配的元素的节点。

可以看出过滤条件中jQuery.contains( self[ i ], this )是关键,该函数使用的是Sizzle选择器中的函数,在Sizzle引擎中有分析,详情点击。

第二种,如果选择器是字符串,调用jQuery.find (= Sizzle)直接处理

  第二个参数是可选的。函数用于从当前匹配元素开始,逐级向上级选取符合指定表达式的第一个元素,并以jQuery对象的形式返回。

  这里的表达式包括:选择器(字符串)、DOM元素(Element)、jQuery对象。

  代码中的处理步骤为

  1.根据传递的参数先查询出结果保存在pos中。

  2.遍历当前jQuery对象的每一个元素,从这个元素开始,逐级向上级选取符合指定表达式的第一个祖先元素。

  parents() 和 .closest() 方法类似,它们都沿 DOM 树向上遍历。但区别也很大closest找到第一个符合条件就截止,parents是找到所有符合条件的集合。

jQuery.fn. parent/ parents/ parentsUntil/ next/ prev/ nextAll/ prevAll/ nextUntil/ prevUntil/ siblings/ children/ contents详解

  以上几组筛选被放在一起处理,源码如下

  可以看出,这几个筛选步骤一致。都是先通过map函数把当前jQuery对象每个匹配的元素代入相应的匹配函数(fn)中获取出结果然后在进行后续的过滤。

  我们先看一下后面的过滤(已经通过jQuery.map( this, fn, until )获取到了备选种子ret)  首先,并不是所有的筛选函数都有until这个参数,只有以Until结尾的几个筛选才需要这个参数,其他的筛选只有selector这个参数。

  其次,如果有选择器,则通过选择器过滤一下先前查找结果ret

Jquery 1.9.1源码分析系列(十二)之筛选操作(jquery animate源码)

  然后,guaranteedUnique里面的几种筛选条件(children/contents/next/prev)在当前jQuery对象所匹配的元素个数有多个的时候,通过每个匹配元素获取到的结果保存在结果集ret中,且不需要去重。其他筛选是要去重的。点击查看jQuery.unique方法详解

  另外,还需要处理的特殊情况是: 如果当前jQuery对象所匹配的元素有多个,则使用parents /prevUntil /prevAll这三种筛选的结果需要倒序排列。需要倒序的原因:jQuery.unique使用的是Sizzle引擎中的排序函数Sizzle .uniqueSort,这个排序函数会根据文档最顶层对象到最底层的方式排列。

  最后,返回包裹后的结果

  上面说了主题的框架结构,下面说一下这一组筛选器匹配函数里面用到的两个函数jQuery.dir和jQuery. sibling,直接上源码//从当前元素elem指定的dir对应的节点开始一直查找dir,并将这些节点保存在matched中,直到循环终止。注意:结果中不包含elem节点

  add函数是向当前匹配元素中添加符合指定表达式的元素,并以jQuery对象的形式返回。add可以接收包括:选择器(字符串)、HTML内容(字符串)、DOM元素(Element)、jQuery对象。处理比较简单,直接上源码

  not和filter都是操作本身的集合,not是过滤掉本身集合中满足过滤条件selector的项,留下其他项。而filter是留下满足过滤条件selector的项。

  关键是function winnow( elements, qualifier, keep )函数。这个函数的功能是执行相同的过滤或者不过滤的功能。过滤条件qualifier有三种:函数、DOM节点、字符串。keep:true表示保留满足过滤条件的项,false表示保留不满足过滤条件的项。

winnow的源码注释如下

  其中用到jQuery.grep,grep详解点击这里。

  jQuery.filter( expr, elems, not )这个低级api专门用来处理jQuery.fn.filter中过滤条件为字符串的情况。

  index函数实际上是一个多功能函数的集合。

  第一个功能:不传递elem参数,则表示取当前jQuery对象(jQuery对象的第一个元素)在其所有同辈元素中的位置。

  第二个功能:如果参数为String类型则将其视作选择器,返回当前元素在选择器所匹配的元素中的索引位置。如果该选择器不匹配任何元素或者当前元素不在匹配到的元素内,则返回-1。

  第三个功能:如果object为DOM元素或jQuery对象,则返回该元素(或该jQuery对象中的第一个元素)在当前jQuery对象所匹配的元素中的索引位置。

  其他的筛选处理就不分析了。看源码即可明白。

jquery选择器

选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") id="lastname" 的元素 .class $(".intro") 所有 class="intro" 的元素 element $("p") 所有 <p> 元素 .class.class $(".intro.demo") 所有 class="intro" 且 class="demo" 的元素 :first $("p:first") 第一个 <p> 元素 :last $("p:last") 最后一个 <p> 元素 :even $("tr:even") 所有偶数 <tr> 元素 :odd $("tr:odd") 所有奇数 <tr> 元素 :eq(index) $("ul li:eq(3)") 列表中的第四个元素(index 从 0 开始) :gt(no) $("ul li:gt(3)") 列出 index 大于 3 的元素 :lt(no) $("ul li:lt(3)") 列出 index 小于 3 的元素 :not(selector) $("input:not(:empty)") 所有不为空的 input 元素 :header $(":header") 所有标题元素 <h1> - <h6> :animated 所有动画元素 :contains(text) $(":contains('W3School')") 包含指定字符串的所有元素 :empty $(":empty") 无子(元素)节点的所有元素 :hidden $("p:hidden") 所有隐藏的 <p> 元素 :visible $("table:visible") 所有可见的表格 s1,s2,s3 $("th,td,.intro") 所有带有匹配选择的元素 [attribute] $("[href]") 所有带有 href 属性的元素 [attribute=value] $("[href='#']") 所有 href 属性的值等于 "#" 的元素 [attribute!=value] $("[href!='#']") 所有 href 属性的值不等于 "#" 的元素 [attribute$=value] $("[href$='.jpg']") 所有 href 属性的值包含以 ".jpg" 结尾的元素 :input $(":input") 所有 <input> 元素 :text $(":text") 所有 type="text" 的 <input> 元素 :password $(":password") 所有 type="password" 的 <input> 元素 :radio $(":radio") 所有 type="radio" 的 <input> 元素 :checkbox $(":checkbox") 所有 type="checkbox" 的 <input> 元素 :submit $(":submit") 所有 type="submit" 的 <input> 元素 :reset $(":reset") 所有 type="reset" 的 <input> 元素 :button $(":button") 所有 type="button" 的 <input> 元素 :image $(":image") 所有 type="image" 的 <input> 元素 :file $(":file") 所有 type="file" 的 <input> 元素 :enabled $(":enabled") 所有激活的 input 元素 :disabled $(":disabled") 所有禁用的 input 元素 :selected $(":selected") 所有被选取的 input 元素 :checked $(":checked") 所有被选中的 input 元素

通过点击jqgrid表格弹出需要的表格数据 首先对Jqgrid网格插件做个简要的说明。在众多的表格插件中,Jqgrid的特点是非常鲜明的。特点如下:完整的表格呈现与运算功能,包含换页、栏位排序、g

jqGrid表格应用之新增与删除数据附源码下载 jqGrid可以结合fancybox等插件完成超酷的弹出层效果,通过与php后台交互,可以轻松完成数据的添加与详情查看,而这个过程完全是一个ajax异步通信过程

Jqgrid之强大的表格插件应用 jqGrid是一款基于jQuery的功能强大的表格插件,使用jqGrid可以轻松实现前端页面与后台数据进行ajax异步通信,jqGrid运行速度相当快,可以很好的应用在一

标签: jquery animate源码

本文链接地址:https://www.jiuchutong.com/biancheng/376176.html 转载请保留说明!

上一篇:日常收藏的jquery技巧(html收藏夹导入)

下一篇:通过点击jqgrid表格弹出需要的表格数据(jqgrid单元格点击事件)

  • 收到以前年度退所得税分录
  • 不动产经营租赁服务包括哪些
  • 本月发生费用下月收到发票
  • 2020年关于住房公积金的新规定
  • 从国外购进样品要交税吗
  • 建筑业购进苗木进项抵税计算公式是什么
  • 增值税预缴表填写模板
  • 当期免抵税额如何做账
  • 外资企业需要遵守哪些法律
  • 投资性房地产收取租金增值税税率
  • 小规模纳税人增值税超过30万怎么纳税
  • 关联企业间融资方式
  • 门店关闭费用怎么处理
  • 外地项目不预缴税款
  • 差旅费中的车票可以抵扣进项税吗
  • i5 8500装win10
  • 积分全部换购商品是什么
  • 购入黄金产品怎么入账
  • antd怎么用
  • 合作社实际没有自产自销,但税务方面怎么可以提供证明
  • 安代驾给我发短信
  • 拔罐的好处和坏处除湿
  • codeigniter 教程
  • 现金折扣的会计分录处理
  • 现金折扣的账务处理最新规定
  • 新准则下的现金流量包括
  • 应付职工薪酬年末结转到哪个科目
  • php实现数组排序,所有奇数在前偶数在后怎么排序
  • 税收变动作用
  • 冰川湾国家公园的冰川不止有白色一种
  • HTTP 协议
  • gpt3 transformer
  • 进口付汇和出口收汇
  • 股东投资款怎么存入公司
  • 保险代理人展业成本如何计算
  • 管理人员工资属于直接费还是间接费
  • 借款利息记入短期借款吗
  • 天然气零售企业
  • 哪些企业可以开13点税票
  • threejs 3dtiles
  • 股东退股怎么入账
  • 外管证超期
  • 股权激励税务处理方案
  • 物业增值服务主要有哪些
  • 税收分类编码是什么意思啊
  • 企业未分配利润为负数什么原因
  • 电子承兑汇票承兑后几天到账
  • 只要有销售收入就能赚钱
  • 行政事业单位过节费发放规定
  • 净资产利润率的公式是什么
  • 在记账过程中,可能发生各种各样的差错
  • 红字发票抵扣时增值税纳税申报表如何处理
  • 汽车销售公司代购汽车有风险吗
  • 出口免税项目
  • 在SQL Server 2005中,数据库文件的扩展名为
  • freebsd常用命令
  • linux系统 虚拟机
  • freebsd ip配置
  • dwm占用内存过高 进程处理
  • win8怎么设置自动开机
  • nvvsvc.exe是什么进程
  • cocoscreator渲染流程图
  • cocos2d安装
  • unity发布exe
  • JavaScript浏览器扩展
  • nodejs的socket
  • 网页制作css样式
  • vue设置背景图片全屏
  • jquery将文本框设置为只读
  • app启动页动画效果
  • sell脚本
  • jquery 图片
  • vr project
  • js判断当前页面是否为空
  • jquery的核心理念
  • 社保缴费电子回单在哪里截图
  • 房产税怎么计提和缴纳分录
  • 企业所得税年度申报时间
  • 报税软件怎么用
  • 食品烟酒消费包括哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设