文章目录

  • 一.hasClass()
  • 二.toggleClass()
  • 三.链式编程demo1
  • 四.链式编程demo2
  • 五.获取兄弟元素
  • 六. 获取兄弟元素demo
  • 七.mouseenter和mouseover的区别



一.hasClass()

用于检查元素是否应用了类样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 200px;
            height: 100px;
            background-color: red;
        }
        .cls{
            background-color: green;
        }
    </style>
    <script src="../jquery-1.12.2.js"></script>
    <script>
        $(function () {
            //点击第一个按钮添加类样式
            $('#btn1').click(function () {
                $('#dv').addClass('cls');
            });
            //点击第二个按钮检查这个div是否成功应用了cls样式
            $('#btn2').click(function () {
                var re = $('#dv').hasClass('cls');
                console.log(re);//true
            });
        })
    </script>
</head>
<body>
<input type="button" value="添加类样式" id="btn1"/>
<input type="button" value="检测元素是否应用了类样式" id="btn2"/>
<div id="dv"></div>
</body>
</html>

二.toggleClass()

切换类样式

  1. toggleClass(‘cls’)
  2. toggleClass(‘cls’,switch) switch是一个布尔值(可以是一个表达式)
  3. toggleClass(func) 里面是一个回调函数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .cls{
            background-color: black;
        }
        div {
            width: 200px;
            height: 200px;
        }
        .happy {
            background-color: pink;
        }
        .sad {
            background-color: grey;
        }
    </style>
    <script src="../jquery-1.12.2.js"></script>
    <script>
        //页面加载后点击按钮btn实现开关灯的效果
        $(function () {
            $('#btn1').click(function () {
                //先判断body是否应用了某个样式,如果应用了就移除,否则就添加
                if($('body').hasClass('cls')){
                    //应用了--移除该类样式
                    $('body').removeClass('cls');
                    $(this).val('关灯');
                }else{
                    //没有应用--让body添加这个类样式
                    $('body').addClass('cls');
                    $(this).val('开灯');
                }
            });
            //第二个实现方式,利用toggleClass函数
            // toggleClass(class|fn[,sw])
            // 作用:切换类
            // 有就删除,没有就添加
            $('#btn2').click(function () {
                $('body').toggleClass('cls');//切换类样式
            });
            //cls+switch
            var count = 1;
            $('#btn3').click(function () {
                //点击三次就切换样式
                $('body').toggleClass('cls', count % 3 === 0);
                count = count + 1;
                //判断是什么标签或者类样式名,id名
                // console.log($('body').is('body'));
            });      
            //回调函数     
            $('#btn4').click(function () {
                $('#dv').toggleClass(function () {
                   if($(this).parent().is('.ll')){
                       return "happy";
                   } else {
                       return 'sad';
                   }
                });
            });
        });
    </script>
</head>
<body>
<input type="button" value="开关灯" id="btn1"/>
<input type="button" value="开关灯2" id="btn2"/>
<input type="button" value="点三次开关灯" id="btn3"/>
<input type="button" value="切换" id="btn4">
<div id="dv"></div>
</body>
</html>

三.链式编程demo1

获取列表中每个li,当鼠标进入后,当前的li有高亮显示,点击的时候可以让当前被点击的li的字体变大,字体的颜色改变,改变字体

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>链式编程demo</title>
    <script src="../jquery-1.12.2.js"></script>
    <script>
        //获取列表中每个li,当鼠标进入后,当前的li有高亮显示,
        // 点击的时候可以让当前被点击的li的字体变大,字体的颜色改变,改变字体
        $(function () {
            $('#uu>li').mouseover(function () {
                //当前进入的li高亮显示,其他li不高亮
                $(this).css('backgroundColor','yellow').siblings('li').css('backgroundColor','');
            }).click(function () {
                $(this).css('fontSize','20px').css('color','green').css('fontFamily','宋体');
            });
        });
    </script>
</head>
<body>
<ul id="uu">
    <li>第一个</li>
    <li>第二个</li>
    <li>第三个</li>
    <li>第四个</li>
    <li>第五个</li>
</ul>
</body>
</html>

四.链式编程demo2

点击按钮,改变按钮的value值,鼠标进入到按钮中,按钮的宽改变,高改变,鼠标离开的时候,按钮的背景颜色为绿色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>链式编程demo2</title>
    <script src="../jquery-1.12.2.js"></script>
    <script>
        //点击按钮,改变按钮的value值,鼠标进入到按钮中,按钮的宽改变,高改变,鼠标离开的时候,按钮的背景颜色为绿色
        $(function () {
           $('#btn').mouseover(function () {
               $(this).css({width:"200px",height:'150px'});
           }).mouseout(function () {
                $(this).css('backgroundColor','green');
           }).click(function () {
                $(this).val("改变后");
           });
        });
    </script>
</head>
<body>
<input type="button" value="显示效果" id="btn"/>
</body>
</html>

五.获取兄弟元素

5.1 .next();获取的是当前元素的下一个兄弟元素----一个
5.2 .nextAll();获取的是当前元素的后面的所有的兄弟元素----后面的多个
5.3 .prev();获取的是当前元素的前一个兄弟元素----一个
5.4 .prevAll();获取的是当前元素的前面的所有的兄弟元素----前面的多个
5.5 .siblings();获取的是当前元素的所有的兄弟元素(自己除外)----多个

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取兄弟元素</title>
    <script src="../jquery-1.12.2.js"></script>
    <script>
        $(function () {
            //获取ul中所有的li,为每个li注册鼠标进入的事件,
            // 当前元素获取到,对当前元素的兄弟元素进行操作
            $('#uu>li').mouseenter(function () {
                //.next();获取的是当前元素的下一个兄弟元素---一个
                // $(this).next().css('backgroundColor','pink');
                //.nextAll();获取的是当前元素的后面的所有的兄弟元素---后面的多个
                // $(this).nextAll().css('backgroundColor','yellow');
                //.prev();获取的是当前元素的前一个兄弟元素--一个
                // $(this).prev().css("backgroundColor","blue");
                //.prevAll();获取的是当前元素的前面的所有的兄弟元素
                //$(this).prevAll().css("backgroundColor","green");
                //.siblings();获取的是当前元素的所有的兄弟元素(自己除外)
                $(this).siblings().css("backgroundColor","green");
            });
        });
    </script>
</head>
<body>
<ul id="uu">
    <li>红烧土豆</li>
    <li>清蒸豆腐</li>
    <li>油炸菠菜</li>
    <li>凉拌土豆丝</li>
    <li>凉拌黄瓜</li>
    <li>炝炒白菜</li>
</ul>
</body>
</html>

六. 获取兄弟元素demo

效果是鼠标进入高亮,离开取消高亮,点击当前元素前面的变为黄色,后面的变为蓝色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        ul {
            list-style-type: none;
            width: 200px;
            position: absolute;
            left: 500px;
        }

        ul li {
            margin-top: 10px;
            cursor: pointer;
            text-align: center;
            font-size: 20px;
        }
    </style>
    <script src="../jquery-1.12.2.js"></script>
    <script>
        //获取ul中所有的li,有鼠标进入事件,鼠标离开事件,点击事件
        $(function () {
            //获取ul>li
            $('ul>li').mouseenter(function () {
                $(this).css('backgroundColor','red').siblings().css('backgroundColor','')
            }).mouseleave(function () {
                $(this).css('backgroundColor','').siblings().css('backgroundColor','');
            }).click(function () {
               //当前元素前面的所有兄弟元素背景颜色变为黄色
               $(this).prevAll().css('backgroundColor','yellow');
                //当前元素后面的所有兄弟元素背景颜色为蓝色
                $(this).nextAll().css("backgroundColor","blue");

                //链式编程代码
                //断链:对象调用方法,返回的不是当前的对象,再调用方法,调用不了,
                //解决断链--->恢复到断链之前的一个效果--修复断链
                //.end()方法恢复到断链之前的效果
                // $(this).prevAll().css("backgroundColor","yellow").end().nextAll().css("backgroundColor","blue");
            });
        });
    </script>
</head>
<body>
<ul>
    <li>青岛啤酒(TsingTao)</li>
    <li>瓦伦丁(Wurenbacher)</li>
    <li>雪花(SNOW)</li>
    <li>奥丁格教士(Franziskaner)</li>
    <li>科罗娜喜力柏龙(Paulaner)</li>
    <li>嘉士伯Kaiserdom</li>
    <li>罗斯福(Rochefort)</li>
    <li>粉象(Delirium)</li>
    <li>爱士堡(Eichbaum)</li>
    <li>哈尔滨牌蓝带</li>
</ul>
</body>
</html>

七.mouseenter和mouseover的区别

mouseenter指的是进入当前元素(不包括子元素)触发的事件
mouseover指的是进入当前的元素,如果进入当前元素的子元素也会触发事件

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title> 
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
x=0;
y=0;
$(document).ready(function(){
  $("div.over").mouseover(function(){
    $(".over span").text(x+=1);
  });
  $("div.enter").mouseenter(function(){
    $(".enter span").text(y+=1);
  });
});
</script>
</head>
<body>

<p>mouseover 事件在鼠标移动到选取的元素及其子元素上时触发 。</p>
<p>mouseenter 事件只在鼠标移动到选取的元素上时触发。 </p>

<div class="over" style="background-color:lightgray;padding:20px;width:250px;float:left">
<h3 style="background-color:white;">Mouseover 事件触发: <span></span></h3>
</div>

<div class="enter" style="background-color:lightgray;padding:20px;width:250px;float:right">
<h3 style="background-color:white;">Mouseenter 事件触发: <span></span></h3>
</div>

</body>
</html>