位置: 编程技术 - 正文

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万免税怎么做账
  • 企业所得税怎么征收
  • 成本费用总额包括信用减值损失吗
  • 主营业务收入少记跨年怎么办
  • 广告服务类企业有哪些
  • 建筑公司工地买空调
  • 企业所得税内部辅助机构说明怎么写
  • 企业支付工商年费怎么查
  • 打开网页出现电脑标志
  • 电脑桌面刷新反应迟钝
  • 公司设计费属于什么费用
  • centos7安装php7.3
  • win10如何设置开机声音
  • 企业所得税税款
  • js在web前端中的作用
  • 销售不动产税目计缴增值税有哪些
  • 印克斯湖国家公园中的德克萨斯矢车菊,德克萨斯州 (© Inge Johnsson/Alamy)
  • 空调维修费进什么会计科目
  • 企业所得税季初数怎么填
  • win11电源高性能模式代码
  • 银行存款转定期申请
  • 库存现金科目的辅助核算项目为日记账
  • 怎么理解中国实际
  • css代码基础
  • css边框实现效果图及代码
  • mongodb启动命令 linux
  • 固定资产折旧计算表模板
  • 公司注销公章的处理
  • 设计协会会长
  • 工业企业中制造费用包括哪些内容
  • 预付账款年底怎么调账
  • 企业内部股权转让协议书
  • 企业出售废旧材料的收入
  • 个人咨询服务费个税怎么算
  • 无需缴纳的税费是什么
  • 管理费用是负数怎么处理
  • 索引的基本原则
  • 微软官微
  • services.exe修改注册表
  • linux远程界面
  • freebsd源代码开放?
  • 如何安装win95系统
  • macbook不可以插u盘吗
  • 2021年win10累积更新
  • mcappins.exe - mcappins进程是什么文件 什么意思.
  • linux中统计字符命令
  • win7系统删除ie浏览器
  • ExtJS TabPanel beforeremove beforeclose使用说明
  • jquery教程chm
  • 怎样从零开始
  • Cocos2dx3.2 CrazyTetris 单线裁剪 对于判断消除的思考(一)
  • mac安装osx失败
  • putty自动登录脚本
  • 参数传递的方式有几种?有什么区别?
  • 要使物体从静止状态转变为运动状态需要对这个物体什么
  • javascript语言基础
  • python flask 路由
  • javascript如何学
  • 怎么查行业代码是多少
  • 常州国家税务局待遇
  • 广东省税务局电子发票怎么下载
  • 契税房屋套数如何计算
  • 计财科科长是什么级别
  • 禅城有什么小孩好玩的地方
  • 广州地税网上服务大厅地址
  • 支付宝交税查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设