基于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 相关文章推荐
对采用动态原型方式无法展示继承机制得思考
Dec 04 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
Dec 30 Javascript
纯JS实现根据CSS的class选择DOM
Mar 22 Javascript
JS基于面向对象实现的放烟花效果
May 07 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
Sep 15 Javascript
AngularJS自动表单验证
Feb 01 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
Oct 31 Javascript
详解React-Todos入门例子
Nov 08 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
Dec 12 Javascript
javascript中的深复制详解及实例分析
Dec 29 Javascript
Vue和Bootstrap的整合思路详解
Jun 30 Javascript
Vue filter介绍及详细使用
Apr 04 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
php4与php5的区别小结(配置异同)
2011/12/20 PHP
php中return的用法实例分析
2015/02/28 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
JavaScript动态绑定详解
2017/09/14 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
Python 冒泡,选择,插入排序使用实例
2015/02/05 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
Python列表解析配合if else的方法
2018/06/23 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
python tkinter窗口最大化的实现
2019/07/15 Python
django如何自己创建一个中间件
2019/07/24 Python
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
家长对老师的感言
2014/03/11 职场文书
公司周年庆活动方案
2014/08/25 职场文书
严以律己学习心得体会
2016/01/13 职场文书
学习党章心得体会2016
2016/01/15 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android