Jquery 在窗口上隐藏和显示元素调整大小

Jquery 在窗口上隐藏和显示元素调整大小,jquery,Jquery,我有一个分类清单。这个列表包含>5个元素,当我在桌面上时,它应该只显示5个元素,并且列表可以用一个已经处理好的按钮展开。当我将窗口调整到一定大小时,它应该只显示列表中的4个元素。这是我开始工作的地方。但是,当我再次将窗口调整为更大的尺寸时,第5个元素不会再次出现 $document.readyfunction{ $'div.category-wrapper'.eachfunction{ var numEl=$this.find'a'.length; 如果numEl>5{ $'a',this.e

我有一个分类清单。这个列表包含>5个元素,当我在桌面上时,它应该只显示5个元素,并且列表可以用一个已经处理好的按钮展开。当我将窗口调整到一定大小时,它应该只显示列表中的4个元素。这是我开始工作的地方。但是,当我再次将窗口调整为更大的尺寸时,第5个元素不会再次出现

$document.readyfunction{ $'div.category-wrapper'.eachfunction{ var numEl=$this.find'a'.length; 如果numEl>5{ $'a',this.eq4.nextAll.hide.addClass'shop-category-toggleable'; } }; $window.resizefunction{ 如果$'tablet-indicator'.is':可见{ $'div.category-wrapper'.eachfunction{ var numEl=$this.find'a'.length; 如果numEl>4{ $'a',this.eq3.nextAll.hide.addClass'shop-category-toggleable'; } }; } }; $window.resizefunction{ 如果$'desktop-indicator'.is':可见{ $'div.category-wrapper'.eachfunction{ var numEl=$this.find'a'.length; console.lognumEl; 如果numEl>5{ $'a',this.eq4.nextAll.hide.addClass'shop-category-toggleable'; } }; } }; }; .类别包装.商店类别{ 显示:块; } 平板显示器, 桌面指示器{ 宽度:10px; 高度:10px; } 片剂指示器{ 背景颜色:绿色; } 桌面指示器{ 背景色:红色; } @介质最小宽度:300px{ 片剂指示器{ 显示:块; } 桌面指示器{ 显示:无; } } @介质最小宽度:600px{ 片剂指示器{ 显示:无; } 桌面指示器{ 显示:块; } } 你只是在隐藏类别 你忘记做的是在隐藏类别之前显示它们。所以无论你什么时候

$('a', this)
    .eq(4)
    .nextAll()
    .hide()
    .addClass('shop-category-toggleable');
您没有显示已隐藏的元素。这就是为什么当您只使用四个元素时,您总是使用四个元素,因为在重新应用可见状态之前,您没有显示任何隐藏的元素

因此,你应该这样做

$('a', this)
    .show() // add this extra line to initially show all categories
    .eq(4)
    .nextAll()
    .hide()
    .addClass('shop-category-toggleable');
不要担心这段代码会显示所有分类,因为它是同步执行的,这意味着当脚本将处理交给渲染时,所有元素都将应用正确的样式,以便渲染引擎正确显示

$document.readyfunction{ $'div.category-wrapper'.eachfunction{ var numEl=$this.find'a'.length; 如果numEl>5{ $'a',this.show.eq4.nextAll.hide.addClass'shop-category-toggleable'; } }; $window.resizefunction{ 如果$'tablet-indicator'.is':可见{ $'div.category-wrapper'.eachfunction{ var numEl=$this.find'a'.length; 如果numEl>4{ $'a',this.show.eq3.nextAll.hide.addClass'shop-category-toggleable'; } }; } }; $window.resizefunction{ 如果$'desktop-indicator'.is':可见{ $'div.category-wrapper'.eachfunction{ var numEl=$this.find'a'.length; console.lognumEl; 如果numEl>5{ $'a',this.show.eq4.nextAll.hide.addClass'shop-category-toggleable'; } }; } }; }; .类别包装.商店类别{ 显示:块; } 平板显示器, 桌面指示器{ 宽度:10px; 高度:10px; } 片剂指示器{ 背景颜色:绿色; } 桌面指示器{ 背景色:红色; } @介质最小宽度:300px{ 片剂指示器{ 显示:块; } 桌面指示器{ 显示:无; } } @介质最小宽度:600px{ 片剂指示器{ 显示:无; } 桌面指示器{ 显示:块; } } 嗯,我试过用。showbefore,但我一定是在错误的地方用的。现在可以了。我也很感激你的改变建议。然而,我只是不知道如何用CSS来实现这一点。如果你觉得无聊,想向我展示它是如何完成的,那将是非常感激的,但现在我将使用你的JS解决方案!这里的媒体查询仅用于演示目的。我使用的项目中的媒体查询设置不同,似乎没有出现bug,至少到目前为止我还没有发现任何bug