基于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 相关文章推荐
一个无限级XML绑定跨框架菜单(For IE)
Jan 27 Javascript
jquery实现的简单二级菜单效果代码
Sep 22 Javascript
JQueryEasyUI之DataGrid数据显示
Nov 23 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
Feb 10 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 Javascript
js匿名函数使用&amp;传参(实例)
Sep 08 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
vue2.0父子组件间传递数据的方法
Aug 16 Javascript
js prototype和__proto__的关系是什么
Aug 23 Javascript
js利用拖放实现添加删除
Aug 27 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 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简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
2016/07/14 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
python 实现归并排序算法
2012/06/05 Python
python学习手册中的python多态示例代码
2014/01/21 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
python 实现识别图片上的数字
2019/07/30 Python
python中数据库like模糊查询方式
2020/03/02 Python
django 实现简单的插入视频
2020/04/07 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
应届生的求职推荐信范文
2013/11/30 职场文书
2013年员工自我评价范文
2013/12/27 职场文书
冬季施工防火方案
2014/05/17 职场文书
4种方法python批量修改替换列表中元素
2022/04/07 Python
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS