Javascript 函数调用一次时换行
当我在这里帮助另一位成员时,我遇到了一个我自己的问题 请看下面的代码: 并前后收缩窗格。您会注意到菜单项按其应有的方式填充更多菜单 然而,我在我的JS的底部这样做:Javascript 函数调用一次时换行,javascript,jquery,html,css,Javascript,Jquery,Html,Css,当我在这里帮助另一位成员时,我遇到了一个我自己的问题 请看下面的代码: 并前后收缩窗格。您会注意到菜单项按其应有的方式填充更多菜单 然而,我在我的JS的底部这样做: detectOverflow(); $('.overflow-items ul').reverseChildren(); detectOverflow(); 因为如果我只在菜单处于某个位置时,在初始加载时调用该函数一次: 您可以删除其中一个函数调用,如下所示: detectOverflow(); $('.overflow-ite
detectOverflow();
$('.overflow-items ul').reverseChildren();
detectOverflow();
因为如果我只在菜单处于某个位置时,在初始加载时调用该函数一次:
您可以删除其中一个函数调用,如下所示:
detectOverflow();
$('.overflow-items ul').reverseChildren();
一旦开始调整I映像的大小,问题就会自行解决,因为此时会再次调用该函数
我花了几个小时试图清理我的代码并找出原因,但我似乎无法找出原因。问题在于“更多”菜单,更准确地说,padding right
属性,当项目位置被查看时,菜单被隐藏,导航包装器没有应用“padding right”样式,因此,第三个元素放置在第一个导航行中,但当显示“更多”菜单并应用填充时,第三个元素将换行到新的行中
我会设置一个初始的正确填充值来计算项目的位置:
我改变了一些将项目传递到“更多”菜单的方式,以避免在应用补丁后产生二次效果,因为项目会立即移动,在某些情况下,元素(例如,第三个较大的元素)会移动到“更多”菜单,但第四个元素会显示在主导航栏中,因为它较小。为了解决这个问题,我在处理完所有项目后,将所有元素移动到“更多”菜单。新代码不应该有任何问题
detectOverflow()中的新代码是:
这似乎只发生在您的编辑中,而在以前的版本中,这并没有发生。但我认为你说的菜单是问题的根源是对的,只要想办法动态插入该值,因为菜单并不总是存在。@MarioD,请看一下新版本,问题已经解决了。
$('.primary-nav-wrapper').css('padding-right', 40);
// Initial run of detect Overflow
detectOverflow();
$('.overflow-items ul').reverseChildren();
//detectOverflow();
var more_items = []
$('.primary-nav li').each(function () {
if (more_items.length > 0) {
more_items.push($(this))
return;
}
var $this = $(this),
elemPos = $this.position().top - ulPos;
// Figure out the width of the combined li margins
liTotalWidth = liTotalWidth + parseInt($(this).css('marginLeft'), 10) + $(this).outerWidth();
// Check if the link dropped down to the second line
// If it did put it in the more menu
if (elemPos > 0) {
more_items.push($this);
}
});
$(more_items).each(function() {
$(this).prependTo('.overflow-items ul');
liCount = $('.primary-nav li').length;
});