jQuery三——筛选方法、事件

目录

一、jquery常用筛选方法

  以下为jquery的常用筛选方法:

  代码示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>筛选方法</title>
    <style type="text/css">
        li.active {
            font-size: 50px;
        }
    </style>
</head>
<body>
<ul>
    <li class="danger">1</li>
    <li><a href="#">luffy</a></li>
    <li class="danger">3</li>
    <li>4</li>
    <a href="#"> 百度</a>
    <a href="#" id="anchor">百度</a>
</ul>

</body>
<script src="jquery-3.3.1.js"></script>
<script type="text/javascript">
    $(function () {
        console.log($(‘li‘));  // 输出:jQuery.fn.init(4)   类似数组的索引

        // jQuery的遍历方法:.each()
        // $(‘li‘).each(function (index,ele) {   // 索引,对象
        $(‘ul‘).children().each(function (index, ele) {
            console.log(ele);   // <li class="danger">1</li> : js的dom对象
            console.log(index);   // 0  : index

            // 判断当前匹配元素里是否有这个类名
            var isDanger = $(this).hasClass(‘danger‘);
            if (isDanger) {
                $(this).css(‘color‘,‘red‘);
            } else {
                $(this).css(‘font-size‘,‘20px‘);
            }
        })

        // children()
        console.log($(‘ul‘).children());
        console.log($(‘li‘));   // 同上
        console.log($(‘ul‘).children(‘.danger‘));

        // parent()
        console.log($(‘li‘).parent()); // jQuery.fn.init [ul, prevObject:...

        // last() 最后一个元素   prev:前一个元素
        console.log($(‘li‘).last().prev());  // jQuery.fn.init [li.danger
        console.log($(‘li‘).last().prevAll());

        // silbings:筛选给定的同胞同类元素(不包括给定元素本身)
        console.log($(‘li‘).siblings(‘li‘));
        console.log($(‘#anchor‘).siblings(‘a‘));  // jQuery.fn.init [a, prevObject..

        // 鼠标指向的li标签变大,移走后变小的选项卡效果
        $(‘li‘).hover(function () {
            $(this).addClass(‘active‘).siblings(‘li‘).removeClass(‘active‘);
        })
    })
</script>
</html>

  

二、应用筛选方法实现选项卡

  选项卡这种效果在网页中应用非常多,效果如下图所示:

  

  示例代码如下所示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{padding: 0;margin: 0;}
            ul{
                list-style: none;
            }
            /*清除浮动产生的问题
            浮动产生的原因:父级元素没有填充高度以及填充的时候父级撑不开,导致子级元素浮动*/
            #box:after{   /*伪类选择器*/
                content: "";
                display: block;
                clear: both;  /* 盒子左右两边都不浮动 */
            }
            #box{width: 800px;border: 1px solid black;margin: 20px auto;background: blue;}
            #leftBox{width: 200px;float: left;}
            #leftBox li{width: 200px;height: 89px;background: red;margin-bottom: 2px;color: white;font: 50px/89px "黑体";  text-align: center;}
            #rightBox div{display: none;float: left; width: 600px;}
            #rightBox p{width:100%;height: 325px;font: 100px/325px "黑体";text-align: center;background: greenyellow }
            /* font:100px/325px; 代表font-size:100px;line-height:325px;  垂直居中*/
            /*text-align:center; 代表中心对齐*/

            /*父元素设置display:table使它成为一个块级表格元素
             * 子元素设置display:table-cell使子元素成为表格单元格,就好比是在表格中一样*/
            #rightBox ul{width: 600px;display: table;}
            #rightBox li{display: table-cell;background: purple;height: 40px;border-right: 2px solid blue;font: 30px/40px "黑体";text-align: center;color: white;}

            #leftBox .active{background: yellow;color: black;}
            #rightBox .active{background: white;color: black;}

        </style>
    </head>
    <body>
        <div id="box">
            <ul id="leftBox">
                <li>a</li>
                <li>b</li>
                <li>c</li>
                <li>d</li>
            </ul>
            <div id="rightBox">
                <div style="display: block">
                    <p>a1</p>
                    <ul>
                        <li class="active">a1</li>
                        <li>a2</li>
                        <li>a3</li>
                        <li>a4</li>
                    </ul>
                </div>
                <div>
                    <p>b1</p>
                    <ul>
                        <li class="active">b1</li>
                        <li>b2</li>
                        <li>b3</li>
                        <li>b4</li>
                    </ul>
                </div>
                <div>
                    <p>c1</p>
                    <ul>
                        <li class="active">c1</li>
                        <li>c2</li>
                        <li>c3</li>
                        <li>c4</li>
                        <li>c5</li>
                        <li>c6</li>
                    </ul>
                </div>
                <div>
                    <p>d1</p>
                    <ul>
                        <li class="active">d1</li>
                        <li>d2</li>
                        <li>d3</li>
                        <li>d4</li>
                    </ul>
                </div>
            </div>
        </div>

    </body>
    <script src="jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            //鼠标移入的时候
            $(‘#leftBox li‘).mouseover(function(){
                //修改自己的样式   siblings:选到本身以外其他兄弟元素,去除active类对应的样式
                $(this).addClass(‘active‘).siblings(‘li‘).removeClass(‘active‘);

                //修改右边的div
                console.log($(this).index()); // 利用$(this).index()取当前对象的索引,输出:0\1\2\3
                // eq(index):获取第N个元素的筛选方法  show\hide方法控制元素显示隐藏
                $(‘#rightBox div‘).eq($(this).index()).show().siblings(‘div‘).hide();

            })

            $(‘#rightBox li‘).click(function(){
                $(this).addClass(‘active‘).siblings(‘li‘).removeClass(‘active‘);

                var liValue  = $(this).html();  // 得到对应<li>标签的值

                // 找到li元素的父元素的前一个元素————<p>  给<p>设置html值
                $(this).parent().prev().html(liValue);
            })

        })

    </script>
</html>

选项卡代码示例

1、使用:after伪元素解决经典清除浮动的问题

  浮动产生的原因:父级元素没有填充高度以及填充的时候父级撑不开,导致子级元素浮动

#box:after{   /*伪类选择器*/
    content: "";
    display: block;
    clear: both;  /* 盒子左右两边都不浮动 */
}

2、注意font:100px/325px; 这种特殊写法

#rightBox p{width:100%;height: 325px;font: 100px/325px "黑体";text-align: center;background: greenyellow }
/* font:100px/325px;代表  font-size:100px;  line-height:325px;  垂直居中*/
/*text-align:center; 代表中心对齐*/

3、display: table;  和 display: table-cell;  

/*父元素设置display:table使它成为一个块级表格元素
 * 子元素设置display:table-cell使子元素成为表格单元格,就好比是在表格中一样*/
#rightBox ul{width: 600px;display: table;}
#rightBox li{display: table-cell;background: purple;height: 40px;border-right: 2px solid blue;font: 30px/40px "黑体";text-align: center;color: white;}

4、$(this).index()可以得到当前对象的索引。两边的元素可以通过索引和eq()方法进行联动:

// eq(index):获取第N个元素的筛选方法  show\hide方法控制元素显示隐藏
$(‘#rightBox div‘).eq($(this).index()).show().siblings(‘div‘).hide();

5、选项卡实现原理:监听鼠标移入事件,触发事件后选到当前被移入的元素,用addClass添加类以此来添加样式,再用siblings选到其他兄弟元素,去除类以此来去除样式。 

$(function(){
    //鼠标移入的时候
    $(‘#leftBox li‘).mouseover(function(){
        //修改自己的样式   siblings:选到本身以外其他兄弟元素,去除active类对应的样式
        $(this).addClass(‘active‘).siblings(‘li‘).removeClass(‘active‘);

        //修改右边的div
        console.log($(this).index()); // 利用$(this).index()取当前对象的索引,输出:0\1\2\3
        // eq(index):获取第N个元素的筛选方法  show\hide方法控制元素显示隐藏
        $(‘#rightBox div‘).eq($(this).index()).show().siblings(‘div‘).hide();
    })

    $(‘#rightBox li‘).click(function(){
        $(this).addClass(‘active‘).siblings(‘li‘).removeClass(‘active‘);

        var liValue  = $(this).html();  // 得到对应<li>标签的值
        // 找到li元素的父元素的前一个元素————<p>  给<p>设置html值
        $(this).parent().prev().html(liValue);
    })
})

6、类似的点击右下方按钮,切换显示内容。是通过parent()方法找到当前元素的父级元素ul,再通过prev()方法定位到元素p,再通过html()方法赋值,修改显示内容。

var liValue  = $(this).html();  // 得到对应<li>标签的值

// 找到li元素的父元素的前一个元素————<p>  给<p>设置html值
$(this).parent().prev().html(liValue);

  

 

原文地址:https://www.cnblogs.com/xiugeng/p/9190303.html

时间: 2024-08-18 10:16:40

jQuery三——筛选方法、事件的相关文章

JQuery的筛选方法

前面咱们学习到了jquery的选择器的筛选用法,那么咱们接下来学习一下jquery的常用筛选方法,一张图搞定一切. 原文地址:https://www.cnblogs.com/fmgao-technology/p/9252270.html

jquery 通配符 筛选器 事件 工具函数

(1)通配符 $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code']");//id属性以code结束的所有input标签 $("input[id*='code']");//id属性包含code的所有input标签 [属性名称] 匹配包含给定属性的元素 [att=value] 匹配包含给定属性的元素 (大小写区分) [att*=value] 模糊匹配 [att!=val

jQuery之筛选方法

1. 父parent.子children.find 1 <div class="yeye"> 2 <div class="father"> 3 <div class="son">儿子</div> 4 </div> 5 </div> 6 7 <div class="nav"> 8 <p>我是屁</p> 9 <div&

前端开发之jQuery位置属性和筛选方法

主要内容: 1.jQuery的位置属性及实例 (1)位置属性 (2)实例 --- 仿淘宝导航栏 2.jQuery的筛选方法及实例 (1)筛选方法 (2)实例一:嵌套选项卡 (3)实例二:小米官网滑动 (4)实例三:焦点轮播图 (5)实例四:动态实现轮播图 一.jQuery的位置属性及实例 1.位置属性 HTML部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8

jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jquery筛选方法

jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jquery筛选方法 一丶什么是JQuery JQuery: ???????JQuery是js的一个库,高度封装了js常用的功能,提供简便方法,调用简单,提高开发效率 ??????js库是包含了把复杂的功能封装到简单的方法中 JQuery的两大特性: ???????链式编程:可以.的形式实现多个功能 ?

jQuery用unbind方法去掉hover事件及其他方法介绍

近日项目开发十分的繁忙,其中一个需求是实现响应式导航.(响应式的问题我们在css相关的博客中再交流) 大家都知道导航是需要下来菜单效果的,必然就会用到 jQuery的 hover() 方法.若是导航放在ipad中,自然hover()就没有什么意义了.那该如何取消hover()并添加touch事件呢? 今天遇到jquery需要去掉hover的问题,原以为直接unbind(“hover”)就可以搞定,可是搞了半天都报错. 原因其实很简单,hover并不是事件.打开参考手册,hover其实由 mous

Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解

一.Jquery遍历筛选数组 1.jquery grep()筛选遍历数组 $().ready( function(){ var array = [1,2,3,4,5,6,7,8,9]; var filterarray = $.grep(array,function(value){ return value > 5;//筛选出大于5的 }); for(var i=0;i<filterarray.length;i++){ alert(filterarray[i]); } for (key in f

jQuery监控文本框事件并作相应处理的方法

本文实例讲述了jQuery监控文本框事件并作相应处理的方法.分享给大家供大家参考.具体如下: //事情委托 $(document)  .on('input propertychange', '#query', function(){   var input = $(this).val();   show(input);  });  var show = function(txt){   var info = '监听:<b>' + txt + '</b><br /><

jquery使用on绑定事件的高级方法

$(doucment).on("click",".main",function(){ } //当页面中需要对发送ajax成功后生成的元素绑定事件时:就需要用到jquery的on方法来绑定事件:因为用这样的事件代理的方法:可以吧事件对象的事件代理到document上:这样就可以通过document来找到你要绑定的元素的对象上: