基于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 相关文章推荐
js 固定悬浮效果实现思路代码
Aug 02 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
Aug 21 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
Jun 23 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
js 提交form表单和设置form表单请求路径的实现方法
Oct 25 Javascript
js中string和number类型互转换技巧(分享)
Nov 28 Javascript
JS中去掉array中重复元素的方法
May 26 Javascript
javascript自定义事件功能与用法实例分析
Nov 08 Javascript
React+TypeScript+webpack4多入口配置详解
Aug 08 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
Feb 06 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
Aug 15 Javascript
jQuery编写QQ简易聊天框
Aug 27 jQuery
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关联数组的10个操作技巧
2013/01/21 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
2020/05/09 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
Python爬虫模拟登录带验证码网站
2016/01/22 Python
Python实现Event回调机制的方法
2019/02/13 Python
python虚拟环境完美部署教程
2019/08/06 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
python实现根据文件格式分类
2019/10/31 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
英语自荐信范文
2013/12/11 职场文书
情人节活动策划方案
2014/02/27 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
甜品店创业计划书
2014/08/14 职场文书
体育运动会广播稿
2014/10/05 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
体育委员竞选稿
2015/11/21 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
MySQL通过binlog恢复数据
2021/05/27 MySQL
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript