基于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 判断元素上是否绑定了事件
Oct 28 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
Jan 17 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
Feb 07 Javascript
JS中FRAME的操作问题实例分析
Oct 21 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
React-router 4 按需加载的实现方式及原理详解
May 25 Javascript
JavaScript之Canvas_动力节点Java学院整理
Jul 04 Javascript
react router 4.0以上的路由应用详解
Sep 21 Javascript
详解vue项目中调用百度地图API使用方法
Apr 25 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 Javascript
vue用elementui写form表单时,在label里添加空格操作
Aug 13 Javascript
原生微信小程序开发中 redux 的使用详解
Feb 18 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分页函数完整实例代码
2014/09/22 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
php获取系统变量方法小结
2015/05/29 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
[46:03]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python 文件和输入输出小结
2013/10/09 Python
python实现RabbitMQ的消息队列的示例代码
2018/11/08 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
Python tkinter三种布局实例详解
2020/01/06 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
房屋出租委托书格式
2014/09/23 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
PHP命令行与定时任务
2021/04/01 PHP
python模板入门教程之flask Jinja
2022/04/11 Python
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS