jQuery 1.9版本之后函数toggle()的轮流执行事件监听器功能被舍弃掉了


toggle()方法主要有两个功能,一是用于绑定两个或多个事件处理器函数,在元素被点击时轮流执行;二是切换元素的显隐状态,如果元素是可见的,切换为隐藏的;如果元素是隐藏的,切换为可见的。在jQuery 1.9中,toggle()方法的第一种使用方式被弃用。删除该机制是为了减少混淆,提高库的模块化。

实现隐藏与显示相互切换的效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>实现隐藏与显示相互切换的效果</title>
    <style>
        .xs {
    
    
            display: none;
        }
    </style>
    <script src="js/jquery-3.5.1.js"></script>
    <script>
        $(function () {
    
    
            var flag = 1;
            $("#a1").click(function (e) {
    
    
                if (flag == 1) {
    
    
                    // 显示div
                    $("#d1").removeClass("xs");
                    flag = 0;
                } else {
    
    
                    // 隐藏
                    $("#d1").addClass("xs");
                    flag = 1;
                }

            });
        });

    </script>
</head>
<body style="font-size: 20px;">
<a id="a1" href="javascript:;">测试</a>
<div id="d1" class="xs">hello</div>
</body>
</html>

或者

var num = 0;

            $('#a1').click(function (e) {
    
    

                if (num++ % 2 == 0) {
    
    
                    // 显示
                    $("#d1").removeClass("xs");
                } else {
    
    
                    // 隐藏
                    $("#d1").addClass("xs");
                }

                e.preventDefault(); //阻止元素的默认动作(如果存在) 

            });

或者

var i=true;//表示开关
        $(".one .top").click(function() {
    
    
            if(i){
    
    
                 $(".content").hide("slow");
                 i=false;
            }else  {
    
    
                 $(".content").show(1500);
                 i=true;
            }
 
        });

可以恢复函数 toggle 轮流执行事件监听器的功能

引入jQuery迁移插件

<script src="../jquery-migrate-1.4.1.js"></script>

在浏览器中运行,可以正常的轮流执行事件监听函数,不过在控制台出会多出一条警示:

JQMIGRATE: jQuery.fn.toggle(handler, handler...) is deprecated

猜你喜欢

转载自blog.csdn.net/liaowenxiong/article/details/124542798