位置: 编程技术 - 正文

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

  • 不征税收入有哪些增值税
  • 股权转让后企业注销个人所得税怎么处理
  • 采购的货物没有及时到怎么办
  • 无力支付什么意思
  • 异地分公司需要什么手续
  • 原材料的入账价值包括保险费吗
  • 销项负数发票是代表交易没有成功吗?
  • 企业持有到期债券的风险
  • 小型微利企业认定标准2023年
  • 建筑业营改增的主要内容
  • 企业常见的股利政策
  • 代销手续费如何开票
  • 报表的应付款太大怎么调?
  • 事业单位自筹事业人员
  • 研发费用进项税额需要转出吗
  • 手工开具发票
  • 退休返聘人员被辞退未提前通知能要求多付一个月工资吗
  • 养牛场增值税的税率是多?
  • 机打发票要不要税号
  • 补贴与工资薪金一起发放,属于福利费,还是纳入工资薪金总额税前扣除?
  • 商业汇票记什么会计科目?
  • 购买国债兑现时要交税吗
  • 公司注销还需要登报吗
  • 累计折旧要结转到本年利润吗
  • 无票收入报税后,后期又开票出去怎么处理?
  • 小规模超过30万是全额交税吗
  • 一次性收取的租金怎么纳税
  • 所有者权是否益包括未交出资吗?
  • 三星电脑安装系统按哪个键
  • 简单才能极致
  • 操作系统的安全目标主要包括哪些?
  • php内核剖析
  • php锁定文本
  • framework怎么用
  • yolov5 ios
  • js获取网页链接
  • 即征即退增值税属于政府补助吗
  • vue router-view路由详解
  • 模型参数是什么意思
  • 车辆过完户保险还能下浮吗
  • 捐款 企业
  • 国家税务局监制的票还能用吗
  • 古腾堡中文官网
  • ps高反差保留怎么弄
  • 购买税控设备的分录怎么做
  • 会务费什么企业可以开
  • 利用java实现计算器
  • sql 语法树
  • DB2专家王云谈商业智能BI
  • mysql创建数据库的操作步骤
  • 现金流量明细表怎么看
  • 净利润率的计算方法公式
  • 结汇时和月底结转汇兑损益
  • 股权转让如何进行资产评估的
  • 固定资产如何入账处理
  • 应收账款确认无法收回,确认为坏账损失
  • 一次性工伤医疗补助金怎么领取
  • 如何提取坏账准备
  • 电汇凭证有效期
  • 递延所得税资产账务处理
  • 电子发票报销需要在背后签名吗?
  • 防伪税控费用抵税分录
  • 成本会计做什么工作内容
  • 社保的会计核算方法
  • mysql创建数据库的操作步骤
  • win8系统怎样
  • mac 的 safari 浏览器
  • 为什么国外程序员比国内厉害
  • ,linux
  • opengl阴影平移
  • php九宫格
  • Node.js中的construct
  • python抓取网络数据
  • jquery判断值是否为空
  • Unity AssetBundle爬坑手记
  • python 批量操作
  • jQuery 获取跨域XML(RSS)数据的相关总结分析
  • 北京税务局地税电话
  • 销售黄金饰品
  • 公司小规模怎么纳税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设