首页 > 其他分享 >js 过滤器~过滤方法

js 过滤器~过滤方法

时间:2023-08-28 15:47:58浏览次数:38  
标签:eq 元素 js filter 过滤 过滤器 方法 选择器

在之前的学习中,我们接触了大量的选择器,包括基本选择器、伪类选择器等。为了更加方便快速地操作元素,除了选择器之外,jQuery还为我们提供了以“方法”(类似于函数方法)形式存在的两种方式:过滤方法和查找方法

过滤方法和查找方法跟之前学习的选择器之间是互补关系,它们补充了很多使用选择器无法进行的操作,例如选取当前元素的父元素、获取当前元素的子元素、判断当前元素是否处于动画状态等。

在这一章中,我们先来学习过滤方法。在jQuery中,常见的过滤方法有以下5种。

  • (1)类名过滤:hasClass()。hasClass()方法一般用于判断元素是否包含指定的类名:如果包含,则返回true;如果不包含,则返回false。
  • (2)下标过滤:eq()。 $().eq(n):n是一个整数,从0开始。当取值为正整数时,eq(0)获取的是第1个元素,eq(1)获取的是第2个元素,……,以此类推。当取值为负整数时,eq(-1)获取的是倒数第1个元素,eq(-2)获取的是倒数第2个元素,……,以此类推。
  • (3)判断过滤:is()。 判断过滤,指的是根据某些条件进行判断,然后选取符合条件的元素。
  • (4)反向过滤:not() 。  css :not过滤,$("li").not(".select").css("color", "red");与$("li:not(.select)"). css("color", "red"); 等价
  • (5)表达式过滤:filter()、has()

这些过滤方法跟选择器的功能相似,也是起到了选择元素的作用。只不过过滤方法是以“方法”的形式,跟选择器形式不一样。

补充:

1.eq()方法跟:eq()选择器

实际上,eq()方法跟:eq()选择器是非常相似的,以下两段代码等价:

$("li").eq(3).css("color", "red");
$("li:eq(3)").css("color", "red");

小伙伴们就会问了:“明明都有一个:eq()选择器了,为什么还要搞一个eq()方法出来呢?”实际上,选择器的形式是固定的,在某些情况下使用会力不从心,而过滤方法可以使得我们更加灵活地操作元素。换一句话来说:过滤方法其实就是对选择器的一种补充。对于过滤方法的优势,我们在实践的时候也会慢慢见识到。

2.is() 判断过滤的方法

语法:$().is(selector)

说明:参数selector是一个选择器。is()方法用于判断当前选择的元素集合中,是否存在符合条件的元素。如果存在,则返回true;如果不存在,则返回false。

is()方法非常好用,能不能用好也直接决定你的代码是否高效。使用jQuery开发,没有做不到,只有想不到。下面列出的是is()方法的常用做法。

//判断元素是否可见
$().is(":visible")
//判断元素是否处于动画中
$().is(":animated")
//判断单选框或复选框是否被选中
$().is(":checked")
//判断当前元素是否第一个子元素
$(this).is(":first-child")
//判断文本中是否包含jQuery这个词
$().is(":contains('jQuery')")
//判断是否包含某些类名
$().is(".select")

$().is(".select")与$().hasClass() 判断元素是否存在某个类名

  1. 从查找速度来看,hasClass()方法远远优于is()方法。原因很简单,is()方法封装的东西比hasClass()方法的多得多,运行速度肯定也慢得多。
  2. 如下所示,hasClass()只需要类名,is()需要类名加.号

  

 3.not()方法可以使用选择器过滤,也可以使用函数过滤

下面两行代码是等价的:

$("li").not(".select").css("color", "red");
$("li:not(.select)"). css("color", "red"); 

 函数过滤:

$("li").not(function(){
    return $(this).text() == "jQuery";
}).css("color", "red");

 4.表达式过滤 filter、has

表达式过滤,指的是使用“自定义表达式”的方式来选取符合条件的元素。这种自定义表达式可以是选择器,也可以是函数。在jQuery中,表达式过滤共有两个方法:一个是filter();另外一个是has()。

一、filter()

在jQuery中,filter()是功能最强大的过滤方法,它可以使用选择器过滤,也可以使用函数过滤。

1.选择器过滤:指的是使用选择器来选取符合条件的元素。

语法:$().filter(selector)

说明:参数selector是一个选择器。

$("li").filter(".select").css("color", "red")

2、函数过滤:指的是根据函数的返回值来选取符合条件的元素。

语法:$().filter(fn)

说明:参数fn是一个回调函数。

$("li").filter(function(){
    return $(this).text() == "jQuery";
}).css("color", "red");

filter()非常强大,几乎把之前学过的过滤方法的功能都包含进去了。不过正是由于filter()内部封装的东西过多,导致运行速度非常慢。因此在实际开发中,建议大家优先考虑其他过滤方法,实在迫不得已再用filter()方法。

二、has()方法

在jQuery中,表达式过滤除了可以使用filter()访问外,我们还可以使用has()方法。has()方法虽然没有filter()方法那么强大,但是它的运行速度比较快。

语法:$().has(selector)

说明:参数selector是一个选择器。

has()方法与filter()方法功能相似,不过has()方法只有选择器过滤,没有函数过滤。因此我们可以把has()方法看成是filter()方法的精简版。

$("li").has("span").css("color", "red");

上面这句代码表示选取内部含有span标签的li元素。此外,has()方法类似于:has()选择器。

举例:

1.判断select是否全选

$('#hwpl_prod_1').find('option[value!=""]').not(':selected').length
// =0 表示全选,!=0 标识非全选

 

From:http://www.lvyestudy.com/jquery/filter-methods

 

标签:eq,元素,js,filter,过滤,过滤器,方法,选择器
From: https://www.cnblogs.com/mianbaoshu/p/17662417.html

相关文章

  • 关于 Vue.js v2 和 v3 生命周期的概述以及它们之间的区别
    Vue.jsv2的生命周期包括以下阶段:1、beforeCreate:在实例初始化之后、实例数据观测和事件配置之前被调用。2、created:实例已经创建完成,数据观测和事件配置已完成,但尚未挂载到DOM上。3、beforeMount:在挂载之前被调用,相关的render函数首次被调用。4、mounted:实例已......
  • cocos2dx 3.x打包出现Can't find config file .cocos-project.json in path
    youcanjustcreatea.cocos-project.jsonfileyourself.Allitcontainsisthefollowingcode: {"project_type":"cpp"如果是lua工程话,直接修改成lua即可。......
  • Js操作Select大全(取值、设置选中等等)
    Js操作Select大全(取值、设置选中等等) jquery操作select(取值,设置选中)每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了。比如<selectclass="selector"></select>1、设置value为pxx的项选中$(".selector").val("pxx");2、设置text为pxx的项选中$......
  • DWR util.js 整理(DWR 处理各种form表单Select/option,table等,
    /********************/util.js包含一些有用的函数function,用于在客户端页面调用.主要功能如下:代码$()获得页面参数值addOptionsandremoveAllOptions初始化下拉框addRowsandremoveAllRows填充表格getText取得text属性值getValue取得form表......
  • JSTL中forEach标签 varStatus属性值
    特性        Getter                     描述current   getCurrent()         当前这次迭代的(集合中的)项index      getIndex()              当前这次迭代从0开始的迭代索引count     getCount()......
  • JSP获得服务端与客户端信息
    System.out.println("Protocol:"+request.getProtocol());System.out.println("Scheme:"+request.getScheme());System.out.println("ServerName:"+request.getServerName());System.out.println("ServerPort:"+re......
  • jsp(JAVA)伪静态的具体设置过程
    一:到  http://tuckey.org/urlrewrite/  下载urlrewrite架包(推荐2.6.0)二:解压所下载的文件,把urlrewrite-2.6.0.jar复制到项目的WebRoot/WEB-INF/lib/目录下三:把urlrewrite.xml复制到项目的WebRoot/WEB-INF/目录下四:在web.xml文件中加入以下<filter><filter-name>UrlRewriteFil......
  • jsessionid释疑解惑
    在web应用的开发中我们会经常看到这样的url:http://www.xxx.com/xxx_app;jsessionid=xxxxxxxxxx?a=x&b=x...。这跟一般的url基本一样,只有一个地方有区别,那就是“;jessionid=xxxxxxxx”。这个参数有时候有,有时候又没有,说它是参数可又跟一般传递的参数不同,它是紧跟在url后面用分号来分......
  • js自定义事件
    新建js新建自定义事件方式有两种:1.newEvent('myEvent',initEvent)2.newCustomEvent('myEvent',initEvent)//newCustomEvent('myEvent',{detail:{name:'yejingxiao'}})相同点简单的自定义事件Event,CustomEvent都可以用,且第二个参数都是可选非必填参数,用以配置常见......
  • 如何修改min.js或者压缩后的js,以便提高代码的可读性。
    前端的js上线的时候一般会使用打包工具处理(webpack,gulp,ugly.js等)。这样做有几点作用。可以压缩空间,提高页面响应速度一定程度上可以保护自己的代码安全,防止别人清晰看懂逻辑或者拷贝代码。提高别人阅读自己代码的门槛可前端开发工作中多多少少,会需要看别人的js代码。可随......