Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 响应jQuery菜单,将最后的元素折叠到单独的菜单中_Javascript_Jquery_Responsive Design - Fatal编程技术网

Javascript 响应jQuery菜单,将最后的元素折叠到单独的菜单中

Javascript 响应jQuery菜单,将最后的元素折叠到单独的菜单中,javascript,jquery,responsive-design,Javascript,Jquery,Responsive Design,我有一个单级导航列表。我想做的是,在调整窗口大小时,在末尾添加一个下拉列表,以显示不适合窗口宽度的元素 在图像表示下面: var base = this, container = $(base.selector), items = container.find('>li:not(.smallmenu):visible'), count = container.find('

我有一个单级导航列表。我想做的是,在调整窗口大小时,在末尾添加一个下拉列表,以显示不适合窗口宽度的元素

在图像表示下面:

var base = this,
                    container = $(base.selector),
                    items = container.find('>li:not(.smallmenu):visible'),
                    count = container.find('>li:not(.smallmenu):visible').length,
                    listWidth = [],
                    added;

            items.each(function() {
                listWidth.push($(this).width());
            });

            function getWidth() {
                var width = 0;
                container.find('>li:not(.smallmenu):visible').each(function() {
                    width += $(this).outerWidth();
                });
                return width + 100;
            }
            function hideLast() {
                var i = container.find('>li:not(.smallmenu):visible').last().index()

                if( $(window).width() < (getWidth()) ) {
                    items.eq(i).hide();

                    if(!added) {
                        $('<li class="smallmenu"><a href="#"><i class="fa fa-plus"></i></a></li>').appendTo(container);
                        added = true;
                    }
                }
            }
            function showLast() {
                var i = container.find('>li:not(.smallmenu):visible').last().index();
                if( (getWidth() + listWidth[i+1]) < $(window).width() ) {
                    container.find('>li:not(.smallmenu)').eq(i+1).show();

                    if((i+2) === count) {
                        container.find('.smallmenu').remove();
                        added = false;
                    }
                }
            }
            $(window).resize(function() {
                showLast();
                hideLast();
            });

var base=this,
容器=$(base.selector),
items=container.find('>li:not(.smallmenu):visible'),
count=container.find('>li:not(.smallmenu):visible')。长度,
listWidth=[],
补充;
项。每个(函数(){
listWidth.push($(this.width());
});
函数getWidth(){
var宽度=0;
container.find('>li:not(.smallmenu):visible').each(function(){
宽度+=$(this).outerWidth();
});
返回宽度+100;
}
函数hideLast(){
var i=container.find('>li:not(.smallmenu):visible').last().index()
如果($(窗口).width()<(getWidth()){
items.eq(i).hide();
如果(!已添加){
$('li class=“smallmenu”>).appendTo(容器);
添加=真;
}
}
}
函数showLast(){
var i=container.find('>li:not(.smallmenu):visible').last().index();
if((getWidth()+listWidth[i+1])<$(window.width()){
container.find('>li:not(.smallmenu)).eq(i+1).show();
如果((i+2)==计数){
container.find('.smallmenu').remove();
添加=错误;
}
}
}
$(窗口)。调整大小(函数(){
showLast();
hideLast();
});
然而,这并没有像预期的那样起作用,已经完成了一半。我觉得我走错了方向


编辑:这是一个更新的JSFIDLE:调整浏览器大小以获得效果。

作为获得更多答案的建议:尝试创建一个或类似的工具,人们可以在这里玩,而无需设置所有的Stufhi@fguillen,这是一个更新的JSFIDLE: