Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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-carousel效果循环列表_Javascript_Jquery_Loops_Carousel - Fatal编程技术网

Javascript 使用jquery-carousel效果循环列表

Javascript 使用jquery-carousel效果循环列表,javascript,jquery,loops,carousel,Javascript,Jquery,Loops,Carousel,我正在尝试循环一个列表,产生旋转木马效果。我认为它应该首先知道所有列表的计数,这样它才能做数学运算。然后它可以做这样的事情。如果它在另一侧添加,它将删除另一侧的某些内容。因此,如果我删除第一个列表项,它将添加最后一个列表项 $(function() { $('#up').mouseenter(goUp); $('#down').mouseenter(goDown); function goUp() { $('#list').last('li').rem

我正在尝试循环一个列表,产生旋转木马效果。我认为它应该首先知道所有列表的计数,这样它才能做数学运算。然后它可以做这样的事情。如果它在另一侧添加,它将删除另一侧的某些内容。因此,如果我删除第一个列表项,它将添加最后一个列表项

$(function() {

    $('#up').mouseenter(goUp);
    $('#down').mouseenter(goDown);

    function goUp() {
        $('#list').last('li').remove;
        $('#list').first('li').append('put the first item here')
    }


    function goDown() {
        $('#list').first('li').remove;
        $('#list').last('li').append('put the first item here')
    }   

}

<a id="up">+</a>
<ul id="list">
    <li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>

</ul>

<a id="down">-</a>
$(函数(){
$('向上').mouseenter(goUp);
$('down')。mouseenter(仓库);
函数goUp(){
$('#list')。最后('li')。删除;
$(“#list”).first('li').append('put the first item here'))
}
函数仓库(){
$('#list')。首先('li')。删除;
$(“#list”).last('li').append('put the first item here'))
}   
}
+
  • 一,
  • 二,
  • 三,
  • 四,
  • 五,
-
有一些问题,首先,
last
first
方法没有按照您的想法工作,您没有将选择器传递给它们(),因此您实际上要做的是在
列表的匹配选择器中查找最后一个元素。您要使用的是
:last
选择器()(和
:首先
),将选择器更改为

下一步
remove
是一个方法而不是属性,因此您缺少一些括号。另外
remove
将返回您正在处理的jQuery对象,以便您可以在DOM中重新定位它


这实现了您想要的。它使用
before
after
方法在DOM中正确插入新项。

您在那里有很多错误,我认为您的逻辑是错误的。您想要使用
.current
类和
hide()
show()
这些项目。像这样的东西应该可以用

$items.hide().first().addClass('cur').show();

var actions = {
    getCurIdx: function(){ 
        return $items.filter('.cur').index(); 
    },
    goTo: function(idx){
        // Something like...
        $items
       .removeClass('cur').hide()
       .eq(idx).addClass('cur').show();
    },
    next: function(){ 
        var _idx = actions.getCurIdx(); 
        if(_idx < $items.length) { 
            actions.goTo(_idx+1); 
        } else {
            actions.goTo(0); // Go first
        }
    },
    prev: function(){ 
        var _idx = actions.getCurIdx(); 
        if(_idx >= 0) { 
            actions.goTo(_idx-1); 
        } else {
            actions.goTo($items.length-1); // Go last
        }
    }
};

$next.click(function(){ actions.next(); });
$prev.click(function(){ actions.prev(); });
$items.hide().first().addClass('cur').show();
var操作={
getCurIdx:函数(){
返回$items.filter('.cur').index();
},
转到:函数(idx){
//类似于。。。
$items
.removeClass('cur').hide()
.eq(idx).addClass('cur').show();
},
下一步:函数(){
var_idx=actions.getCurIdx();
如果(_idx<$items.length){
行动.转到(_idx+1);
}否则{
actions.goTo(0);//先执行
}
},
prev:function(){
var_idx=actions.getCurIdx();
如果(_idx>=0){
行动.转到(_idx-1);
}否则{
actions.goTo($items.length-1);//最后一步
}
}
};
$next.click(函数(){actions.next();});
$prev.click(函数(){actions.prev();});

这里有一大堆错误。不正确,remove实际上并没有删除元素,它只是将其与DOM断开连接。它将保留在您选择的jQuery对象的内存中,直到该对象被描述。一旦被描述,它将被放入GC队列中。这意味着如果您在局部变量中捕获它,它将被保留在一个范围内d你可以把它放回DOM中。哦,我明白你的意思了。我编辑了答案。我通常使用
detach()
,因为它还保留与该对象关联的事件。再说一遍,我认为
remove()
在这种情况下不是正确的方法。