Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.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 不移动第一个元素_Javascript_Jquery_Jquery Isotope - Fatal编程技术网

Javascript 不移动第一个元素

Javascript 不移动第一个元素,javascript,jquery,jquery-isotope,Javascript,Jquery,Jquery Isotope,我正在尝试实现lib,以便元素围绕菜单排序。经过一些研究和工具之后,我选择将同位素容器中的第一个元素设置为菜单项。然后,我将其过滤掉,而不进行任何过滤或排序操作 我选择了这种方法,而不是角戳记方法,因为角戳记仅适用于右对齐的元素(据我所知,我可能会错过使用它的机会…)。我想把菜单放在左上角 我遇到的问题是洗牌。我试图随机化除第一个元素(在本例中为菜单)之外的所有元素的位置。我想把菜单放在原处。当我尝试使用随机排列对所有元素进行随机排序时,我无法从可用列表中筛选出菜单项进行随机排列。这会导致一些导

我正在尝试实现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')

使用
#菜单


下面是一个我尝试过过滤其他种类的版本:

这似乎对我不起作用。我第一次尝试它时,它就工作了,但在随后的排序和页面加载中,它再次随机重新排序。好消息,但我不知道它缓存了排序的值。它不是应该随机重新排序吗?对不起,我不清楚你有什么问题。啊,对不起,这个模糊的问题。我正在尝试洗牌所有元素,但第一个元素(菜单)除外。因此,我希望菜单作为第一个元素保留在原位,并让所有其他同位素元素随机重新排序。为了清楚起见,我更新了一点问题。这正是我想要的,非常感谢。我从来没有想到它会返回一个随机数。这很聪明,并不像我想象的那么复杂。