jQuery高级选择符与遍历

news/2024/9/28 11:14:51
1.HTML代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="jquery-3.4.1.js"></script>
    <style>
        a{
            text-decoration: none;
        }
        .selected{
            background-color: red;
        }
        .alt{
            background-color: antiquewhite;
            color:brown;
        }
    </style>
</head>
<body>
    <script>
        (function($){
                $.extend($.expr[":"],{
                    //element:当前考虑的DOM元素。
                    //index:DOM元素在结果集中的索引
                    //matches:数组,包含用于解析这个选择符的正则表达式的解析结果
                    //         一般来说,matches[3]是这个数组中唯一有用的值
                    //          :group(b),则matches[3]包含的值就是b,也就是括号中的文本
                    //set:匹配当前元素的整个DOM元素集合
                    group:function(element,index,matches,set){
                        var num=parseInt(matches[3],10);
                        if(isNaN(num)){
                            return false;
                        }
                        return index % (num*2) <num;
                    }
                });
        })(jQuery);
        $(document).ready(function(){
            //使用缓存来改进性能
            var $news=$('#news');
            function stripe(){
                //通过连缀来改进性能
                // $('#news').find('tr.alt').removeClass('alt').find('tbody')
                $news.find('tr.alt').removeClass('alt');
                $news.find('tbody').each(function(){
                    //tbody下面可见的包含td的tr对象
                    $(this).children(':visible').has('td')
                    .filter(
                      //  ':group(3)'
          function(index){
                         return (index%4)<2;
                     }
                    ).addClass('alt');
                   
                });
            }
            stripe();
            //动态筛选表格内容
            $('#topics a').click(function(event){
                  event.preventDefault();
                  var topic=$(this).text();
                  $('#topics a.selected').removeClass('selected');
                  $(this).addClass('selected');
                  $('#news tr').show();
                  if(topic!='All'){
                    //#news tr找到表格中所有的行,
                    //:has()从当前被选中的元素中挑选出那些包含指定元素的元素
                    //:contains()只会匹配那些某个单元格包含指定文本的行
                    // $('#news tr:has(td):not(:contains("'+topic+'"))').hide();
                    $('#news').find('tr:has(td)').not(
                        //回调函数返回true,那么被检测的元素就会被排除到结果集之外
                        function(){
                            //检测每一行的子元素,查找第四个子元素,对他的文本进行简单的测试
                        return $(this).children(':nth-child(4)').text()==topic;
                    }).hide();
                  }
                  stripe();
            });
            //为表格添加条纹
            // $('#news').find('tr:nth-child(even)').addClass('alt');
            // $('#news tbody').each(function(){
            //     $(this).children().has('td').filter(function(index){
            //         return (index%4)<2;
            //     }).addClass('alt');
            // })
            //高级的表格条纹效果,如果按主题来筛选,就会出现奇怪的现象
        });
    </script>
    <div id="topics">
          Topics:
          <a href="topics/all.html" class="selected">All</a>
          <a href="topics/community.html" >Community</a>
          <a href="topics/confererces.html" >Conferences</a>
          <a href="topics/documentation.html" >Documentation</a>
    </div>
    <table id="news">
        <thead>
            <tr>
                <th>Date</th>
                <th>Headline</th>
                <th>Author</th>
                <th>Topic</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <th colspan="4">2011</th>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Documentation</td>
            </tr>
            <tr>
                <th colspan="4">2011</th>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Documentation</td>
            </tr>
            <tr>
                <th colspan="4">2011</th>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released Community</td>
                <td>John Resig</td>
                <td>Documentation</td>
            </tr>
           
        </tbody>
        <tbody>
            <tr>
                <th colspan="4">2012</th>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr id="release">
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Documentation</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <th colspan="4">2012</th>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Documentation</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
        </tbody>
        <tbody>
            <tr>
                <th colspan="4">2013</th>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Documentation</td>
            </tr>
            <tr>
                <th colspan="4">2013</th>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Documentation</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Documentation</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Community</td>
            </tr>
            <tr>
                <td>Apr 15</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Releases</td>
            </tr>
            <tr>
                <td>Apr 14</td>
                <td>jQuery 1.6 Beta 1 Released</td>
                <td>John Resig</td>
                <td>Conferences</td>
            </tr>
            </tbody>
    </table>
</body>
</html>
 
二、页面效果
页面一:

 

 

页面二:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/59552.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

uniapp使用路由名称跳转

由于web端和app公用一套菜单,而两个项目的路径是不同的,为解决这个问题,封装了一套使用路由名称作为跳转路由的方法 1.在pages.json文件里pages对应的页面配置里添加 routeName 字段(自定义),我做的app里面的菜单是后台获取的,所以这里的value值对应的是后台返回的页面路…

MyBatis-Plus动态表名

MyBatis-Plus动态表名 一、早期方案 1.1 MyBatis-Plus版本 1、添加MyBatis-Plus依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version> </dependency&g…

PbootCMS附件上传失败报错UNKNOW: Code: 8192; Desc: stripos()

在PBootCMS中遇到附件上传失败的报错 UNKNOW: Code: 8192; Desc: stripos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior,这通常是因为PHP版本升级后某些函数的行为发生了变化。具体来说…

Android Studio单独运行Java程序

见图:添加代码如下: <option name="delegatedBuild" value="false" />

西门子WinCC开发笔记(一):winCC西门子组态软件介绍、安装

前言WinCC,非常经典的组态软件,西门子触摸屏。  西门子PLC的软件还是弄得比较多,WinCC是西门子触摸屏的编程和仿真软件,配套西门子的触摸屏,可以组态编程、仿真然后下载到HMI人机触摸屏上,作为组态软件来说,是非常值得了解、熟悉和学习的。 相关博客《案例分享:Qt激光…

面试-JS Web API-事件绑定和事件代理

编写一个通用的事件监听函数 描述事件冒泡的流程 无线下拉的图片列表,如何监听每个图片的点击?---事件代理 用e.target获取触发元素 用matches判断是否是触发元素事件绑定 addEventListenerfunction bindEvent(elem, type, fn) {elem.addEventListener(type, fn) }const btn1…

用 Rust 实现敏感信息拦截插件,提升 AI 网关安全防护能力

本⽂对敏感信息拦截插件的使用方式和实现原理进行了简单介绍,它能够自动检测并处理请求和响应中的敏感词,有效防止敏感信息泄露。通过对不同数据范围的支持和灵活的配置选项,该插件能够适应各种应用场景,确保数据的安全性和合规性。希望对你有帮助!作者:刘毅杰,棱镜七彩…

Linux--软链接,硬链接

在 Linux 和类 Unix 系统中,软链接(符号链接)和硬链接是用于文件系统中引用文件的两种方式。它们各自有不同的特点和用途。 软链接(符号链接) 硬链接定义 软链接是一个指向另一个文件或目录的特殊文件,包含指向目标文件路径的文本信息 硬链接是指向文件系统中同一文件的…