0

0

精简版jQuery:选择jQuery

王林

王林

发布时间:2023-08-29 16:41:10

|

740人浏览过

|

来源于php中文网

原创

精简版jquery:选择jquery

自定义 jQuery 过滤器单独使用时可以选择元素

没有必要提供与过滤器结合使用的实际元素,例如 $('div:hidden')。在需要选择器表达式的任何地方都可以简单地单独传递过滤器。

一些例子:

// Selects all hidden elements
$(':hidden');
// Selects all div elements, then selects only even elements
$('div').filter(':even');

摸索:隐藏和:可见过滤器

自定义 jQuery 选择器过滤器 :hidden:visible 没有像人们预期的那样考虑 CSS 可见性属性。 jQuery 确定元素是否隐藏或可见的方式是该元素是否占用文档中的任何空间。确切地说,如果浏览器报告的 offsetWidthoffsetHeight 大于 0,则该元素是可见的。这样,一个元素可能具有 display 的 CSS 值 block 包含在具有 display none 会准确报告它不可见。

仔细检查代码并确保您理解为什么返回的值是 true,即使选择的 具有 display:block 的内联样式。




    
    
    



使用 Is() 方法返回布尔值

通常需要确定所选元素集是否确实包含特定元素。使用 is() 方法,我们可以根据表达式/过滤器检查当前集。如果该集合至少包含一个由给定表达式/过滤器选择的元素,则检查将返回 true。如果不包含该元素,则返回 false 值。检查以下代码:




    
jQuery
jQuery

很明显,第二个 alert() 将返回 false 值,因为我们的包装器集不包含具有 id 属性值 i2is() 方法对于确定包装器集是否包含特定元素非常方便。

注释:从 jQuery 1.3 开始,is() 方法支持所有表达式。以前,诸如包含层次结构选择器的复杂表达式(例如 +~>)始终返回 true

过滤器由其他内部 jQuery 函数使用。因此,适用于此处的所有规则也适用于此处。

一些开发人员使用 is('.class') 来确定元素是否具有特定的类。不要忘记 jQuery 已经有一种方法可以执行此操作,称为 hasClass('class'),该方法可用于包含多个类值的元素。但说实话, hasClass() 只是 is() 方法的一个方便的包装。


您可以向 jQuery 传递多个选择器表达式

您可以为 jQuery 函数的第一个参数提供多个用逗号分隔的表达式:$('表达式, 表达式, 表达式')。换句话说,您不限于仅使用单个表达式来选择元素。例如,在下面的示例中,我向 jQuery 函数传递了三个用逗号分隔的表达式。




    
jQuery

is the

  • best!

每个表达式都会选择全部添加到包装器集中的 DOM 元素。然后我们可以使用 jQuery 方法对这些元素进行操作。请记住,所有选定的元素都将放置在同一个包装集中。执行此操作的低效方法是调用 jQuery 函数三次,每个表达式调用一次。


检查包装器集.length以确定选择

可以通过检查包装器集是否有长度来确定表达式是否选择了任何内容。您可以使用数组属性 length 来执行此操作。如果 length 属性不返回 0,那么您就知道至少有一个元素与您传递给 jQuery 函数的表达式相匹配。例如,在下面的代码中,我们检查页面中是否存在 id 为“notHere”的元素。你猜怎么了?它不在那里!




    
    


注释: 如果不明显,length 属性还可以报告包装器集中的元素数量 - 换句话说,传递给 jQuery 函数的表达式选择了多少元素.


创建用于选择元素的自定义过滤器

可以通过创建您自己的自定义过滤器来扩展 jQuery 选择器引擎的功能。理论上,您在这里所做的一切都是基于已经是 jQuery 一部分的自定义选择器。例如,假设我们想要选择网页上绝对定位的所有元素。由于 jQuery 还没有自定义 :positionAbsolute 过滤器,因此我们可以创建自己的过滤器。




    
absolute
absolute
static
absolute
static
absolute

这里要掌握的最重要的一点是,您不限于 jQuery 提供的默认选择器。您可以创建自己的。然而,在您花时间创建自己的选择器版本之前,您可以简单地尝试具有指定过滤函数的 filter() 方法。例如,我可以通过简单地使用传递给 filter() 方法的函数来过滤前面示例中的 元素,从而避免编写 :positionAbsolute 选择器。

// Remove 
elements from the wrapper // set that are not absolutely positioned $('div').filter(function () { return $(this).css('position') === 'absolute'; }); // or // Remove all elements from the wrapper // set that are not absolutely positioned $('*').filter(function () { return $(this).css('position') === 'absolute'; });

注释:有关创建自己的选择器的更多信息,我建议阅读以下内容:http://www.bennadel.com/blog/1457-How-To-Build-A-Custom- jQuery-Selector.htm


按数字顺序过滤与 DOM 关系过滤之间的差异

jQuery 提供了过滤器,用于通过集合中元素的数字上下文来过滤包装器集。

这些过滤器是:

  • :first
  • :last
  • :even
  • :odd
  • :eq(index)
  • :gt(index)
  • :lt(index)

注释:过滤包装器集本身的过滤器通过过滤集合中起始点 0 或索引 0 的元素来实现这一点。例如 :eq(0):first 访问集合中的第一个元素 - $('div:eq(0)') - 索引为 0。这与单索引的 :nth-child 过滤器形成对比。这意味着,例如 :nth-child(1) 将返回第一个子元素,但尝试使用 :nth-child(0) 将不起作用。使用 :nth-child(0) 将始终不选择任何内容。

使用 :first 将选择集合中的第一个元素,而 :last 将选择集合中的最后一个元素。请记住,它们根据集合内的关系(从 0 开始的数字层次结构)过滤集合,而不是 DOM 上下文中元素的关系。有了这些知识,就应该很明显为什么过滤器 :first:last:eq(index) 将始终返回单个元素。

如果还不是很明显,请允许我进一步解释。 :first 只能返回单个元素的原因是,当只有一个集合时,集合中只能有一个元素被首先考虑。这应该是相当合乎逻辑的。检查下面的代码,看看这个概念的实际应用。

简单的jQuery日期时间选择器
简单的jQuery日期时间选择器

一款简单的jQuery日期时间选择器插件,允许用户自由选择一个日期和时间,可自定义设置日期,简单实用,喜欢的不要错过。

下载



    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

有了对操作集合本身的清晰理解,我们可以通过使用过滤器来选择与实际 DOM 中其他元素具有唯一关系的元素,从而增强对选择元素的理解。 jQuery 提供了几个选择器来执行此操作。其中一些选择器是自定义的,而另一些则是众所周知的用于选择 DOM 元素的 CSS 表达式。

  • 祖先后代
  • 父级>子
  • 上一个 + 下一个
  • prev ~ 兄弟姐妹
  • :nth-child(选择器)
  • :first-child
  • :last-child
  • :only-child
  • :empty
  • :has(选择器)
  • :parent

使用这些选择器过滤器将根据元素在 DOM 中与 DOM 中其他元素的关系来选择元素。为了演示这个概念,让我们看一些代码。




    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

如果您对 $('li:nth-child(odd)').text() 返回值 135135 感到惊讶,那么您还没有掌握关系过滤器。 $('li:nth-child(odd)') 口头上说的是“查找网页中所有属于子元素的

  • 元素,然后按奇数子元素过滤它们”。好吧,碰巧页面中有两个结构,它们有一组由
  • s 组成的兄弟结构。我的观点是这样的:包装器集由基于过滤器的元素组成,该过滤器考虑了元素与 DOM 中其他元素的关系。这些关系可以在多个位置找到。

    要记住的概念是,并非所有过滤器都是平等创建的。确保您了解哪些是基于 DOM 关系进行过滤的,例如:only-child-以及哪些按元素的位置进行过滤-例如:eq()-在包装集中。


    当值包含元字符时按 ID 选择元素

    jQuery 选择器使用一组元字符(例如 # ~ [] = > ),当用作名称的文字部分时(例如 id="#foo[bar]" )应该被逃脱。可以通过在字符前放置两个反斜杠来转义字符。检查下面的代码,了解如何在选择表达式中使用两个反斜杠来选择 id 属性值为 #foo[bar] 的元素。

    
    
    
        
    jQuery

    以下是用作名称的文字部分时需要转义的字符的完整列表。

    • #
    • ;
    • &
    • ,
    • .
    • +
    • *
    • ~
    • '
    • :
    • !
    • ^
    • $
    • [
    • ]
    • (
    • )
    • =
    • >
    • |
    • /

    堆叠选择器过滤器

    可以堆叠选择器过滤器 - 例如a[title="jQuery"][href^="http://"].一个明显的例子是选择一个具有特定属性和特定属性值的元素。例如,下面的 jQuery 代码将仅选择 HTML 页面中的 元素:

    • 包含 href 属性,起始值为“http://”
    • 有一个值为“jQuery”的 title 属性

    仅选择一个 正在被选择。

    
    
    
        jQuery.com
    
        jQuery.com 1
    
        jQuery.com
    
        
        
    
    
    

    请注意代码中我们如何堆叠两个过滤器来完成此选择。

    除了属性过滤器之外,还可以堆叠其他选择器过滤器。例如:

    // Select the last 
    contained in the // wrapper set that contains the text "jQuery" $('div:last:contains("jQuery")') // Get all check boxes that are both visible and selected $(':checkbox:visible:checked')

    要掌握的概念是选择器过滤器可以堆叠并组合使用。

    注释:您还可以嵌套和堆叠过滤器 - 例如$('p').filter(':not(:first):not(:last)')


    嵌套选择器过滤器

    选择器过滤器可以嵌套。这使您能够以非常简洁和强大的方式使用过滤器。下面,我将举例说明如何嵌套过滤器来执行复杂的过滤。

    
    
    
        
    javascript
    jQuery
    javascript
    jQuery
    javascript
    jQuery

    要掌握的概念是选择器过滤器可以嵌套。

    注释:您还可以嵌套和堆叠过滤器 - 例如$('p').filter(':not(:first):not(:last)')


    摸索 :nth-child() 过滤器

    :nth-child() 过滤器有很多用途。例如,假设您只想选择

      元素中包含的每三个
    • 元素。可以使用 :nth-child() 过滤器。检查以下代码以更好地了解如何使用 :nth-child() 过滤器。

      
      
      
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

      通过使用正则表达式搜索属性值来选择元素

      当用于选择元素的 jQuery 属性过滤器不够健壮时,请尝试使用正则表达式。 James Padolsey 为过滤器选择器编写了一个很好的扩展,它允许我们创建用于过滤的自定义正则表达式。我在这里提供了一个代码示例,但请确保您还查看了 http://james.padolsey.com 上的文章以了解所有详细信息。

      
      
      
          

      选择直系子代与选择所有后代之间的差异

      直接子元素只能通过使用组合器 > 或通过 children() 遍历方法来选择。可以使用 * CSS 表达式选择所有后代。确保您清楚地了解两者之间的区别。下面的示例演示了这些差异。

      
      
      
          

      text

      text


      当上下文已设置时选择直接子元素

      当已经提供了上下文时,可以在没有上下文的情况下使用组合器 > 来选择直接子元素。检查下面的代码。

      
      
      
          
      • text
        • text
        • text
      • text

      基本上,当上下文已经确定时,'>元素'可以用作表达式。

    • 相关专题

      更多
      jquery插件有哪些
      jquery插件有哪些

      jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

      150

      2023.09.12

      jquery怎么操作json
      jquery怎么操作json

      操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

      310

      2023.10.13

      jquery删除元素的方法
      jquery删除元素的方法

      jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

      394

      2023.11.10

      jQuery hover()方法的使用
      jQuery hover()方法的使用

      hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

      501

      2023.12.04

      jquery实现分页方法
      jquery实现分页方法

      在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

      181

      2023.12.06

      jquery中隐藏元素是什么
      jquery中隐藏元素是什么

      jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

      120

      2024.02.23

      jquery中什么是高亮显示
      jquery中什么是高亮显示

      jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

      174

      2024.02.23

      jQuery 正则表达式相关教程
      jQuery 正则表达式相关教程

      本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

      35

      2026.01.13

      Java编译相关教程合集
      Java编译相关教程合集

      本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

      9

      2026.01.21

      热门下载

      更多
      网站特效
      /
      网站源码
      /
      网站素材
      /
      前端模板

      精品课程

      更多
      相关推荐
      /
      热门推荐
      /
      最新课程
      jQuery 教程
      jQuery 教程

      共42课时 | 4.5万人学习

      HTML+CSS基础与实战
      HTML+CSS基础与实战

      共132课时 | 9.6万人学习

      tp6+adminlte搭建通用后台
      tp6+adminlte搭建通用后台

      共39课时 | 5.8万人学习

      关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
      php中文网:公益在线php培训,帮助PHP学习者快速成长!
      关注服务号 技术交流群
      PHP中文网订阅号
      每天精选资源文章推送

      Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号