基于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 相关文章推荐
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
Mar 06 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
Apr 14 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
Jun 02 Javascript
Select标签下拉列表二级联动级联实例代码
Feb 07 Javascript
js 删除数组的几种方法小结
Feb 21 Javascript
学习JavaScript编程语言的8张思维导图分享
Mar 27 Javascript
jQuery实现ctrl+enter(回车)提交表单
Oct 19 Javascript
javascript伸缩型菜单实现代码
Nov 16 Javascript
vue2.0实现分页组件的实例代码
Jun 22 Javascript
webpack-dev-server远程访问配置方法
Feb 22 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
Jul 01 Javascript
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 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 中文和编码判断代码
2010/05/16 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
原来我一直安装 Python 库的姿势都不对呀
2019/11/11 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
python excel和yaml文件的读取封装
2021/01/12 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
高中生校园生活自我评价
2013/09/19 职场文书
护士辞职信范文
2014/01/19 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
临床医学专业求职信
2014/08/08 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
2014年预备党员学习新党章思想汇报
2014/09/15 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
公司的力量观后感
2015/06/05 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
python数字类型和占位符详情
2022/03/13 Python
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android
Python中的 No Module named ***问题及解决
2022/07/23 Python