jquery - 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 迁移插件,然后检查控制台是否有可能指向问题的警告/消息。
即使没有显示警告,它也应该允许您的较新版本像以前的版本一样运行。
推荐阅读
- git - 将一些项目从用户帐户移动到另一个用户帐户
- javascript - 导出异步填充数据
- ios - 谓词不适用于 CoreData - Swift 4
- javascript - 在快速应用程序的函数中返回响应
- r - R:多个一致宽度的分箱问题
- c - 使用 switchcontext 时 C 中的信号
- c# - 实体框架引发错误 - 列名 'Id' 无效。\r\n 列名 'Id' 无效。"
- javascript - 如何在 JavaScript 中展平模板字符串
- rascal - Rascal 中的列表理解错误“set [Declaration] 不支持下标”
- classpath - 如何识别infinispan配置xml文件的路径