首页 > 解决方案 > Jquery 从 v2.2.4 升级到 3.3.1

问题描述

我将 jquery v.2.2.4 用于我的移动菜单。这是一个超级菜单。当用户点击第 1 级时,第 2 级应该向下滑动。换句话说:级别 1 只是一个导航级别,有标题,没有内容。与第 2 级相同。所有要查看/使用的页面都在第 3 级和更深的级别。

使用 jquery v2.2.4。一切都很好。现在我必须升级到 3.3.1 版本。这里显示的是 1 级的空白页面,而不是打开 2 级。感谢您的帮助。

    (function ($) {

//  Level 1
    $(document).ready(function () {
        $('#mobile_menu').find('ul').each(function () {
            var currentURI = window.location.href;
            var links = $('a', this);
            var collapse = true;
            for (var i = 0; i < links.size(); i++) {
                var elem = links.eq(i);
                var href = elem.attr('href');
                var hrefLength = href.length;
                var compareTo = currentURI.substr(-1 * hrefLength);

                if (href === compareTo) {
                    collapse = false;
                    $(elem).parent('li').parent('ul').css({'display': 'block'});
                    $(elem).css({'background-color': '#B3ADAD'});
                    break;
                }
            }
            if (collapse) $(this).hide();
        });

//  Level 2
        $('#mobile_menu').find('ul li ul').each(function () {
            var currentURI = window.location.href;
            var links = $('a', this);
            var collapse = true;
            for (var i = 0; i < links.size(); i++) {
                var elem = links.eq(i);
                var href = elem.attr('href');
                var hrefLength = href.length;
                var compareTo = currentURI.substr(-1 * hrefLength);

                if (href === compareTo) {
                    collapse = false;
                    $(elem).parent('li').parent('ul').parent('li').parent('ul').css({'display': 'block'});
                    $(elem).css({'background-color': '#B3ADAD'});
                    break;
                }
            }
            if (collapse) $(this).hide();
        });

//  Level 3
        $('#mobile_menu').find('ul li ul li ul').each(function () {
            var currentURI = window.location.href;
            var links = $('a', this);
            var collapse = true;
            for (var i = 0; i < links.size(); i++) {
                var elem = links.eq(i);
                var href = elem.attr('href');
                var hrefLength = href.length;
                var compareTo = currentURI.substr(-1 * hrefLength);

                if (href === compareTo) {
                    collapse = false;
                    $(elem).parent('li').parent('ul').parent('li').parent('ul').parent('li').parent('ul').css({'display': 'block'});
                    $(elem).css({'background-color': '#B3ADAD'});
                    break;
                }
            }
            if (collapse) $(this).hide();
        });

//  Level 4
        $('#mobile_menu').find('ul li ul li ul li ul').each(function () {
            var currentURI = window.location.href;
            var links = $('a', this);
            var collapse = true;
            for (var i = 0; i < links.size(); i++) {
                var elem = links.eq(i);
                var href = elem.attr('href');
                var hrefLength = href.length;
                var compareTo = currentURI.substr(-1 * hrefLength);

                if (href === compareTo) {
                    collapse = false;
             $(elem).parent('li').parent('ul').parent('li').parent('ul').parent('li').parent('ul').parent('li').parent('ul').css({'display': 'block'});
                    $(elem).css({'background-color': '#B3ADAD'});
                    break;
                }
            }
            if (collapse) $(this).hide();
        });

//  Opening und Closing of the child menus
        $('#mobile_menu').find('li.active').addClass('open').children('ul').show();
        $('#mobile_menu').find('li.has-sub>a').on('click', function () {
            $(this).removeAttr('href');
            var element = $(this).parent('li');
            if (element.hasClass('open')) {
                element.removeClass('open');
                element.find('li').removeClass('open');
                element.find('ul').slideUp(200);
            } else {
                element.addClass('open');
                element.children('ul').slideDown(200);
                element.siblings('li').children('ul').slideUp(200);
                element.siblings('li').removeClass('open');
                element.siblings('li').find('li').removeClass('open');
                element.siblings('li').find('ul').slideUp(200);
            }
        });
    });
})(jQuery);

标签: jquery

解决方案


您应该考虑添加jQuery 迁移插件,然后检查控制台是否有可能指向问题的警告/消息。

即使没有显示警告,它也应该允许您的较新版本像以前的版本一样运行。


推荐阅读