Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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_Arrays - Fatal编程技术网

Javascript 如何在jQuery中基于鼠标滚轮滚动更改多个表的顺序?

Javascript 如何在jQuery中基于鼠标滚轮滚动更改多个表的顺序?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个div-thelist,其中包含一组html表。当鼠标滚轮转动时,我希望第一张桌子被移除并添加到底部。如果车轮转向另一个方向,则转向另一个方向 出于某种原因,下面的代码也可以工作,从我的理解来看,列表应该越来越长。既然我不明白为什么它是这样工作的,我就不能让它以另一种方式工作 有什么帮助吗?谢谢你 $("#thelist").bind("mousewheel",function(ev, delta) { if (delta > 0) { var c

我有一个div-thelist,其中包含一组html表。当鼠标滚轮转动时,我希望第一张桌子被移除并添加到底部。如果车轮转向另一个方向,则转向另一个方向

出于某种原因,下面的代码也可以工作,从我的理解来看,列表应该越来越长。既然我不明白为什么它是这样工作的,我就不能让它以另一种方式工作

有什么帮助吗?谢谢你

$("#thelist").bind("mousewheel",function(ev, delta) 
{
    if (delta > 0)
    {
        var children = $("#thelist").children('table');
        var tmpChild = children[0];
        children.push(tmpChild);
    }

    if (delta < 0)
    {
        // How to do this, btw ?
    }


    $("#thelist").html(children);
}
该方法应逐个删除数组中的条目,并将其添加到顶部,请参见编辑:

if(delta < 0){
    var child = children.pop();
    children.unshift(child);
}
您应该将children声明和初始化语句放在if之前。 并使用if/else if

$("#thelist").bind("mousewheel",function(ev, delta) {
    var children = $("#thelist").children('table');

    if (delta > 0){
        var tmpChild = children[0];
        children.push(tmpChild);
    }else if (delta < 0) {
        var tmpChild = children.pop();
        children.unshift(tmpChild);
    }

    $("#thelist").html(children);
}
编辑:
您应该使用而不是

我也不确定这将如何工作,但是可以使用Javascript数组方法对其进行一些清理

pop-从数组中删除最后一项并将其返回

按-将项目添加到列表的末尾

shift-从数组中删除第一项并将其返回

取消移动-将项目添加到列表的开头

因此,您的代码如下所示:

var children = $("#thelist").children('table');

if(delta > 0)
{        
    var tmpChild = children.shift();
    children.push(tmpChild);
}
if(delta < 0)
{
    var tmpChild = children.pop();
    children.unshift(tmpChild);
}

我会这样做,为了更清楚地表达我们的意图,把列表中的第一个孩子放在列表的末尾

$("#thelist").bind("mousewheel",function(ev, delta)
{
    var list = $("#thelist");
    if (delta > 0)
    {
        list.children('table').first().appendTo(list);
    }

    if (delta < 0)
    {
        list.children('table').last().prependTo(list);
    }
});
我认为这可能会更有效率,因为它只是重新排列现有的DOM元素,而不是调用html来更新列表的全部内容。不过,这种影响可能可以忽略不计