位置: 编程技术 - 正文

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单元格点击事件)

  • 关税的征收对象是贸易性商品,不包括
  • 增值税进项税额转出是什么意思
  • 租赁收入缴纳个人所得税
  • 企业对公账户钱怎么取出来
  • 小规模开票多少不用交税
  • 从企业分红所得税怎么算
  • 税金附加是什么类
  • 附加税费申报表出不来数据
  • 专票当成普票入账怎么调整
  • 技术服务公司可以卖材料吗
  • 年底向员工客户发放、赠送实物的怎么缴个税
  • 公司分立是不是法人
  • 赠送电影票的说辞
  • 买车押金合同要注意什么手续
  • 个人所得税薪金所得是实发工资还是应发工资
  • 业务招揽方式
  • 高新技术企业认定管理办法
  • 小规模季度超过30万怎么填报增值税
  • 变更公司财务人员,需要本人去吗
  • 店铺员工证费用计入什么科目?
  • 怎么解决百度打不开页面
  • 剑灵怎么双开2023
  • 汇兑产出的收益计入
  • 预收账款预提费用是什么
  • 广告公司文化事业费怎么交
  • 停工损失会计准则
  • 获取url的参数有哪些方法
  • 公司投资股票如何做账
  • 未分配利润转增股本 母公司会计分录
  • windows搜索点不动
  • 企业接受股权投资概念政府基金
  • 桔梗的功效与作用吃法
  • vue开发pc前端网站
  • 家具折旧费是什么意思
  • 政府补助的会计处理分录
  • 保理业务的会计记账
  • fsma32.exe进程是什么文件 fsma32是什么进程
  • idea添加web项目
  • 无形资产相关税费
  • 非盈利组织盈利怎么办
  • 代扣增值税如何做账
  • php定义一个二维数组
  • php-xml
  • 出口的发票怎么开视频
  • php单态模式简单解释
  • redis两种持久化方式的优缺点
  • echarts快速上手
  • php登录流程
  • 违法汽车查询
  • shift命令 向左移动参数
  • 应付账款盘点表
  • python进行统计分析
  • mongodb删除文档命令
  • 自然人股东原价转让股权
  • 制造费用分配后总账月末余额在哪方?
  • 销货清单要放凭证里吗
  • 股利分配是什么科目
  • 开具发票后,如发生销售退回,通常有的两种处理方式是?
  • 买赠业务税务处理
  • 应交税费如何做到账表一致
  • 实际费用以什么为准
  • 投资者投入无形资产的入账价值
  • 什么是现金流量表
  • 其他债权投资计提损失准备会引起资产总额增加吗
  • 公司市场部职能
  • 如何学会计做账视频
  • 获取sqlserver密码
  • freebsd 编译
  • 清理macbook清除系统垃圾
  • LINUX系统管理员维护招聘
  • 在pc上安装了hp网络打印机需要注意什么
  • linux配置ssh
  • win10创建系统还原点有什么用
  • android opengles2.0教程
  • jquery实现
  • jquery是基于java的吗
  • unity制作的2d游戏
  • 莱鸟人集团
  • js下拉框怎么设置
  • java script js
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设