【问题标题】:javascript/jquery content rotator goes crazy (starts to loop very fast after sometime)javascript/jquery 内容旋转器变得疯狂(一段时间后开始快速循环)
【发布时间】:2011-10-21 13:14:30
【问题描述】:

我正在使用一个非常简单的内容旋转器。

虽然它看起来工作正常,但有时,在浏览器窗口在该页面上停留一段时间(可能 10 分钟)后,动画开始高速播放(就像每个“帧”仅持续 1 毫秒)。

这是我的html:

<ul id="contentRotator">
<li class="cItem">
    <a href="#"><img src="" alt="" /></a>
    <h3><a href="#">Text</a></h3>
    <p><a href="#">Text</a></p>
</li>
<li class="cItem">
    ...
</li>
...
</ul>

这是脚本

function tCycle() {
    var duration = 4000;
    var speed = 500; //
    var arrDivs = $('#contentRotator .cItem');
    var arrLength = arrDivs.length;

    var iCurrent = 0;
    var iNext;

    arrDivs.not(arrDivs.eq(iCurrent)).hide();

    setInterval(function () {
        iNext = (iCurrent + 1) % arrLength;
        arrDivs.eq(iNext).fadeIn(speed);
        arrDivs.eq(iCurrent).fadeOut(speed);
        iCurrent = (iCurrent + 1) % arrLength;
    }, duration);
}

我在 chrome 16、ie8、firefox 7、opera 11 和 safari 5 中测试了该页面。它似乎只发生在 chrome 中。

对正在发生的事情有任何想法吗?

编辑:我发现当它变得疯狂时,如果我滚动到页面底部然后再回来(旋转器在顶部),它(有时)是固定的,速度正常。

【问题讨论】:

  • 工作版本:jsfiddle.net/jphellemons/fRGqA 现在将在 chrome 中打开它。我使用 chrome 15.x
  • 该版本的 chrome (16) 至少是测试版。 :P 你在当前的稳定版本中测试过吗?

标签: javascript jquery google-chrome


【解决方案1】:

我已经测试过http://jsfiddle.net/jphellemons/fRGqA/ 它适用于我的机器。 我有 Google Chrome 15.0.874.92 beta-m

您可能想要使用像 innerfade 这样的 jQuery 插件,因为 fadeInfadeOut 工作不那么流畅。

或使用:

arrDivs.eq(iCurrent).fadeOut(speed, function() {
    arrDivs.eq(iNext).fadeIn(speed);
});

编辑:也适用于 Chrome 15.0.874.100!

【讨论】:

  • 感谢返回函数推荐。我用过。为此和“在我的机器上工作”徽标+1。它是常用的还是你的主意?
  • 从codinghorror借来的,请不要告诉阿特伍德!但我真的推荐innerfade插件!
  • 我正在开发响应式布局。我查看了innerfade,但它也需要一个固定的高度值,就像循环插件一样。这就是我选择简陋剧本的原因。
  • 您好 Turzifer,容器高度是自动设置的默认值containerheight: Height of the containing element in any css-height-value (Default: 'auto')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 2016-02-22
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多