基于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 相关文章推荐
extjs form textfield的隐藏方法
Dec 29 Javascript
基于JQuery的cookie插件
Apr 07 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
JS实现简易图片轮播效果的方法
Mar 25 Javascript
JavaScript转换二进制编码为ASCII码的方法
Apr 16 Javascript
JS获取子窗口中返回的数据实现方法
May 28 Javascript
Angular2内置指令NgFor和NgIf详解
Aug 03 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
Nov 17 Javascript
AngularJS实现使用路由切换视图的方法
Jan 24 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
Sep 05 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 include,include_once,require,require_once
2008/09/05 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
Base64(二进制)图片编码解析及在各种浏览器的兼容性处理
2017/02/09 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
vue 过滤器filter实例详解
2018/03/14 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python中类型关系和继承关系实例详解
2015/05/25 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
Python3实现转换Image图片格式
2018/06/21 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
汉森批发:Hansen Wholesale
2018/05/24 全球购物
2014社区三八妇女节活动方案
2014/03/30 职场文书
运动会宣传稿50字
2015/07/23 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
JavaCV实现照片马赛克效果
2022/01/22 Java/Android