关于额外点击功能的jQuery间隔问题

时间:2010-11-26 07:50:44

标签: jquery click setinterval

我有这个javascript代码:

var listitem = $(".landkaart > ul > li"),
                    len = listitem.length,
                    index = 0;

                $(".landkaart > ul > li:first").addClass('open');

                setInterval( function() {
                    $(".landkaart > ul > li").removeClass('open');

                    if( ( index + 1 ) >= len )
                    {
                        index = 0;
                        $(".landkaart > ul > li:first").addClass('open');
                    }
                    else
                    {
                        listitem.eq( index ).next().addClass('open');
                    }
                    index++;
                }, 5000);

我有html,

<div class="landkaart">
                <ul>
                    <li><a class="doetinchem" title="Vestiging Doetinchem" href="vestigingen.html">Doetinchem</a>
                        <div class="doetinchem">
                            <div class="pijl"></div>
                            <ul>
                                <li><h2>Doetinchem</h2></li>
                                <li>Gildenbroederslaan 4</li>
                                <li>Postbus 196</li>
                                <li>7000 AD Doetinchem</li>
                                <li>Telefoon (0314) 37 70 00</li>
                                <li>Telefax (0314) 37 70 05</li>
                                <li><a class="email" href="mailto:doetinchem@kabaccountants" title="Stuur een mail naar: doetinchem@kabaccountants">doetinchem@kabaccountants</a></li>
                            </ul>
                        </div>
                    </li>
                </ul>
            </div>

html有比现在显示更多的li项目。但现在我的问题。             现在.landkaart ul li项目旋转。超过5秒,你会看到一个新的礼物项目。             但现在必须javascript播种。那当我徘徊“.landkaart a”the landkaart&gt;李必须表现出来             间隔必须停止。当我使用鼠标时。然后必须重新开始间隔。

1 个答案:

答案 0 :(得分:0)

我会这样做:

  1. 将功能移到外面 的setInterval
  2. 放置布尔逻辑以停止更改 如果光标结束
  3. 将鼠标悬停/输出事件添加到li元素

           var keepRotating = true;
           function rotate() {
                if(!keepRotating) return;
                $(".landkaart > ul > li").removeClass('open');
    
    
    
            if( ( index + 1 ) &gt;= len )
            {
                index = 0;
                $(".landkaart &gt; ul &gt; li:first").addClass('open');
            }
            else
            {
                listitem.eq( index ).next().addClass('open');
            }
            index++;
        }
    
    
        $(".landkaart &gt; ul &gt; li").mouseover(function(){
          keepRotating = false;
          $(".landkaart &gt; ul &gt; li").removeClass('open');
          $(this).addClass('open');
          index = $(".landkaart &gt; ul).index(this);
        });
    
    
        $(".landkaart &gt; ul &gt; li").mouseout(function(){
          keepRotating = true;
        });
    
    
        setInterval( rotate(), 5000);