0

我正在做一个学校项目,我需要你的帮助。我所做的是通过一组 div 的无限循环。有3个div和3个链接。当我点击这些链接时,应该立即显示正确的 div(并在此之后显示所有 div 并再次循环)。问题是当我点击时会有延迟,这是我不想要的......当我点击链接时,是否有可能立即下雪?还有其他更简单/不太复杂的方法吗?你能更改/添加我需要的代码吗?先感谢您。

<ul id="cyclelist">
  <li><div>Div 1</div></li>
  <li><div>Div 2</div></li>
  <li><div>Div 3</div></li>
</ul>
</br></br>
<a href="#" class="className1">link1</a><br/>
<a href="#" class="className2">link2</a><br/>
<a href="#" class="className3">link3</a><br/>


var j=0;
function changeOnClick()
{

$("a").click(function(e) {
    e.preventDefault();
    if ($(this).hasClass('className1')) {
        j=-1;
    }
    else if ($(this).hasClass('className2')) {
        j=0;
    }
    else if ($(this).hasClass('className3')) {
        j=1;
    }
});
}

 var delay = 2000;
 function cycle(){
        var jmax = $("ul#cyclelist li").length -1;
        changeOnClick();
         $("ul#cyclelist li:eq(" + j + ")")
                 .animate({"opacity" : "1"} ,400)
                 .animate({"opacity" : "1"}, delay)
                 .animate({"opacity" : "0"}, 400, function(){
                         (j == jmax) ? j=0 : j++;
                         cycle();
                 });
         };
 cycle();
4

2 回答 2

0
.animate({"opacity" : "1"} ,400)

动画的第二个参数代表速度,这就是为什么你得到延迟删除

这是 .animate 的语法

$(selector).animate({params},speed,callback);

一旦通过它.. http://www.w3schools.com/jquery/jquery_animate.asp

编辑- 为您的评论..我不知道天气是正确的方法..最好使用 setTimeout() 调用 cycle();

setTimeout(cycle,2000);
于 2013-02-24T11:33:50.380 回答
0

尝试从事件处理程序调用循环函数。像这样的东西

if ($(this).hasClass('className1')) {
    j=-1;
    cycle();
}

这应该可以解决您的问题。

于 2013-02-24T11:38:14.807 回答