Jquery 在浏览器调整大小时重新加载脚本

Jquery 在浏览器调整大小时重新加载脚本,jquery,responsive-design,navigation,Jquery,Responsive Design,Navigation,我正在为一个响应迅速的网站设计一个水平导航栏。 我创建了一个jQuery脚本来计算在包装列表元素之前可以显示多少列表元素 到目前为止还不错 现在我的问题是: 如何使用$(window).resize在包装编号列表元素之前重新计算它们 JS: $(函数(){ var totalWidth=0; 变量菜单=$('nav ul'); var menuWidth=menu.innerWidth(); menu.find('li')。每个(函数(){ totalWidth+=$(this).outerWi

我正在为一个响应迅速的网站设计一个水平导航栏。 我创建了一个jQuery脚本来计算在包装列表元素之前可以显示多少列表元素

到目前为止还不错

现在我的问题是: 如何使用
$(window).resize
在包装编号列表元素之前重新计算它们

JS:

$(函数(){
var totalWidth=0;
变量菜单=$('nav ul');
var menuWidth=menu.innerWidth();
menu.find('li')。每个(函数(){
totalWidth+=$(this).outerWidth();
如果(总宽度>菜单宽度){
console.log(总宽度);
$(此).before(“

  • 感谢Davelee

    创建初始化函数,将IDONY调用过的代码放入其中

    var menu = $('nav ul');
    
    而不是onUpdate函数重新计算新值

    var totalWidth = 0;
    var menuWidth = menu.innerWidth();
    menu.find('li').each(function () {
        totalWidth += $(this).outerWidth();
        if (totalWidth > menuWidth) {
            console.log(totalWidth);
            $(this).before('<li class="more-content"><a>More</a><ul>'); 
            $('.nav .menu li:last').after('</li>');
            $(".more-content").nextAll().appendTo(".more-content ul");
            return false; // Abort loop
        }
    });
    
    var totalWidth=0;
    var menuWidth=menu.innerWidth();
    menu.find('li')。每个(函数(){
    totalWidth+=$(this).outerWidth();
    如果(总宽度>菜单宽度){
    console.log(总宽度);
    $(此).before('li class=“more content”>more
      ); $('.nav.menu li:last')。在('')之后; $(“.more content”).nextAll().appendTo(“.more content”); 返回false;//中止循环 } });

    调用
    initialization
    甚至可以在那里调用
    onUpdate
    一次。而不仅仅是调用
    onupatte
    甚至可以调整窗口的大小。

    欢迎这样做!并始终将您的代码放在问题中。感谢您的回复!onUpdate函数是什么意思?现在我修改了我的代码如下:
    var totalWidth = 0;
    var menuWidth = menu.innerWidth();
    menu.find('li').each(function () {
        totalWidth += $(this).outerWidth();
        if (totalWidth > menuWidth) {
            console.log(totalWidth);
            $(this).before('<li class="more-content"><a>More</a><ul>'); 
            $('.nav .menu li:last').after('</li>');
            $(".more-content").nextAll().appendTo(".more-content ul");
            return false; // Abort loop
        }
    });