好,所以我試圖完成的原則很簡單。我有一個包含未知(用戶可選)項目數的菜單。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