Javascript 不移动第一个元素
我正在尝试实现lib,以便元素围绕菜单排序。经过一些研究和工具之后,我选择将同位素容器中的第一个元素设置为菜单项。然后,我将其过滤掉,而不进行任何过滤或排序操作 我选择了这种方法,而不是角戳记方法,因为角戳记仅适用于右对齐的元素(据我所知,我可能会错过使用它的机会…)。我想把菜单放在左上角 我遇到的问题是洗牌。我试图随机化除第一个元素(在本例中为菜单)之外的所有元素的位置。我想把菜单放在原处。当我尝试使用随机排列对所有元素进行随机排序时,我无法从可用列表中筛选出菜单项进行随机排列。这会导致一些导航。。当副导航决定飞走时出现问题 以下是一个布局示例: 到目前为止,我已经尝试过:Javascript 不移动第一个元素,javascript,jquery,jquery-isotope,Javascript,Jquery,Jquery Isotope,我正在尝试实现lib,以便元素围绕菜单排序。经过一些研究和工具之后,我选择将同位素容器中的第一个元素设置为菜单项。然后,我将其过滤掉,而不进行任何过滤或排序操作 我选择了这种方法,而不是角戳记方法,因为角戳记仅适用于右对齐的元素(据我所知,我可能会错过使用它的机会…)。我想把菜单放在左上角 我遇到的问题是洗牌。我试图随机化除第一个元素(在本例中为菜单)之外的所有元素的位置。我想把菜单放在原处。当我尝试使用随机排列对所有元素进行随机排序时,我无法从可用列表中筛选出菜单项进行随机排列。这会导致一些导
$('.container')。同位素('shuffle')代码>
此函数只有一个参数-回调。我不知道我怎么能在这里操纵选择过程
我考虑过使用sort函数,但由于某些原因,我无法获得:
$('.container')。同位素({sortBy:'random'})代码>可以多次开火。即使我这样做了,我仍然不知道如何利用它来过滤我的菜单
任何帮助都将不胜感激,谢谢
编辑:更新了JSFIDLE链接,在可排序对象上包含数字-帮助显示排序工作
编辑2:添加了更多细节。我认为同位素缓存排序,因此它不必重新计算已经完成的排序。它甚至在“随机”的情况下这样做
修复/破解方法是在随机排序后重新加载项目
:
$('#reorder').click(function () {
$('.container').isotope({sortBy: 'random'}).isotope('reloadItems');
});
演示:
至于过滤菜单项,random只是返回一个随机数,因此您可以做的不多。但是,您可以编写自定义随机排序,允许您“过滤”菜单:
getSortData: {
name: function ($elem) {
return $elem.data('name');
},
myrandom: function ($elem) {
if($elem.hasClass('menu')) {
return -1;
}
return Math.random();
}
}
演示:
注意,由于菜单
是一个类,如果有多个菜单
项,您可能会遇到一些奇怪的情况。如果您只有一个,那么ID是更好的选择。在这种情况下,您将使用$elem.is('#menu')
而不是$elem.hasClass('menu')
使用#菜单
:
下面是一个我尝试过过滤其他种类的版本:这似乎对我不起作用。我第一次尝试它时,它就工作了,但在随后的排序和页面加载中,它再次随机重新排序。好消息,但我不知道它缓存了排序的值。它不是应该随机重新排序吗?对不起,我不清楚你有什么问题。啊,对不起,这个模糊的问题。我正在尝试洗牌所有元素,但第一个元素(菜单)除外。因此,我希望菜单作为第一个元素保留在原位,并让所有其他同位素元素随机重新排序。为了清楚起见,我更新了一点问题。这正是我想要的,非常感谢。我从来没有想到它会返回一个随机数。这很聪明,并不像我想象的那么复杂。