好,所以我试图完成的原则很简单。我有一个包含未知(用户可选)项目数的菜单。jQuery的''最后'有问题
发生什么很简单,我们根据窗口的宽度检查菜单的宽度,然后我们说好的,向最后一项添加一个类来隐藏它,这样菜单就不会溢出它的容器。
虽然它有点多斑点,但它有点工程(尝试调整jsfiddle),但有一些问题。
它不仅能消除对DOM负荷最后
li
。调整窗口大小使其工作得相当完美,从last - first(按预期)移除每个项目。
- 调整窗口的大小并不会从
li:hidden:first
(为什么不是?)中删除类。
- 调整窗口的大小并不会从
代码: -
$(window).on("load resize",function(e){
var topmenucontain = $(".top-menu-contain").width();
var brandwidth = $(".brand").width();
var navwidth = $(".nav-button").width();
var lastivisblelength = $(".top-menu-contain").find('li:visible:last').width(); //we must factor in the width of the last visible item so the menu doesn't overflow it's container.
if ($(window).width() < topmenucontain + brandwidth + navwidth + lastivisblelength) {
$(".top-menu-contain").find('li:visible:last').addClass('last-visible');
}
else {
$(".top-menu-contain").find('li:hidden:first').removeClass('last-visible');
}
//opacity is zero by default, once calculations are made, fade the menu in.
$(".top-menu-contain").animate({ opacity: 1 });
});
的jsfiddle - https://jsfiddle.net/ofcy8j83/
请参阅我的评论以回复adeneo以下为什么我不能真正使用媒体查询。 – andy 2015-04-02 20:44:15
顺便说一句,这工作,问题现在是第1点,即只加入类的最后一项onload。 (当可能有十几个李需要“隐藏”时)。 – andy 2015-04-02 20:46:49
@andy,我没有看到第一点,对不起,我迷失在第二个,嘿,只是改变'if'陈述'while' – 2015-04-02 20:54:49