基于jquery的has()方法以及与find()方法以及filter()方法的区别详解


Posted in Javascript onApril 26, 2013

has(selector选择器或DOM元素)   将匹配元素集合根据选择器或DOM元素为条件,检索该条件在每个元素的后代中是否存在,将符合条件的的元素构成新的结果集。

下面举一个例子:

<ul>
  <li>list item 1</li>
  <li>list item 2
    <ul>
      <li><div><span>a</span></div>list item 2-a</li>
      <li>list item 2-b</li>
    </ul>
  </li>
  <li>list item 3</li>
  <li>list item 4</li>
</ul>

$('li').has('span').css('background-color', 'red');

得到的结果如下:

基于jquery的has()方法以及与find()方法以及filter()方法的区别详解

这个例子可以看出:在匹配li时,要检查该li的后代元素中是否包含了span,如果包含,则该元素包含在结果中。如果不包含,那么就排除。

注意:has只起判断作用。以has参数中的选择器或DOM元素做为条件,检测原结果集中的元素是否符合。去掉不符合的元素,将符合的元素构成一个新结果集。

这与find()方法不同,find()方法是获得在当前结果集中每个元素的后代。参数(选择器、jquery集合或DOM元素)做为过滤条件,满足过滤条件的则保留,保留的是后代。而has()方法中,参数只做为条件,符合条件的,它的前元素加入新的结果集,而不是后代加入新的结果集。

$('li').find('span').css('background-color', 'red');

结果为:

基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
filter()方法与has()方法中的参数,都是过滤条件。不同的是filter()方法,条件作用于自身;has()方法条件是作用于它的后代元素中。

以下面的例子为例:filter()方法中,条件作用于自身li,has()方法条件是作用于li的后代元素

<ul>
  <li class="a">list item 1</li>
  <li>list item 2
    <ul>
      <li><div><span>a</span></div>list item 2-a</li>
      <li>list item 2-b</li>
    </ul>
  </li>
  <li>list item 3</li>
  <li>list item 4</li>
</ul>

$('li').filter('.a').css('background-color', 'red');

结果为:

基于jquery的has()方法以及与find()方法以及filter()方法的区别详解

Javascript 相关文章推荐
jQuery ctrl+Enter shift+Enter实现代码
Feb 07 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
Jul 14 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
May 22 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
Bootstrap基本布局实现方法详解
Nov 25 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
Jan 03 Javascript
javascript标准库(js的标准内置对象)总结
May 26 Javascript
vue elementUI tree树形控件获取父节点ID的实例
Sep 12 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
Sep 12 Javascript
Vue3.0 响应式系统源码逐行分析讲解
Oct 14 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
May 26 Javascript
React列表栏及购物车组件使用详解
Jun 28 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 #Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
Apr 26 #Javascript
关于jquery.validate1.9.0前台验证的使用介绍
Apr 26 #Javascript
jQuery.Validate验证库的使用介绍
Apr 26 #Javascript
基于jQuery.Validate验证库知识点的详解
Apr 26 #Javascript
关于jQuery新的事件绑定机制on()的使用技巧
Apr 26 #Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
Apr 25 #Javascript
You might like
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
php查看网页源代码的方法
2015/03/13 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
Angular2库初探
2017/03/01 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Django  ORM 练习题及答案
2019/07/19 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
电子商务专业推荐信范文
2013/12/02 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
班级出游活动计划书
2014/08/15 职场文书
银行贷款收入证明
2014/10/17 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
获奖感言怎么写
2015/07/31 职场文书