可能的jQuery.delay Bug?

时间:2011-03-25 00:29:24

标签: jquery debugging accordion delay fade

我正在使用jQuery.delay与jQuery.accordion和jQuery.fadeIn / Out效果。这是我的javascript:

<script type="text/javascript">
  $(function() {
    $("#accordion").load("update.php");
    var refresh = setInterval(function() {
      $("#accordion").fadeOut("slow", function() {
        $("#accordion").load("update.php", function() {
          $("#accordion").delay(1);
          $("#accordion").fadeIn("slow");
        });
      });
    }, 5000);
  });
</script>

这样做是在手风琴布局中加载由update.php生成的HTML(即它是可折叠的内容),每隔5秒就会轮询update.php以获取新的HTML,并在淡出旧的HTML后将其淡入。 / p>

问题出现在行$("#accordion").delay(1);上。通过这一行,可折叠的内容部分会以某种方式缩减,并且不会像正确的手风琴效果那样“展开”。所有数据仍然存在;您可以单击并拖动鼠标向下滚动它。它只是在浏览器中无法正确呈现或正确绘制div或其他东西。只需删除该行,就可以成功加载而不会出现问题。

我鼓励你尝试重现我的结果,如果你能找到一个解决办法让我知道,因为我确实需要那里的延迟!谢谢你的阅读。

3 个答案:

答案 0 :(得分:2)

delay()不能替代setTimeout()。它会延迟运行动画,但没有动画运行(fadeOut应该已经在那里完成)

答案 1 :(得分:0)

如果您尝试延迟淡入淡出,则代码应为:

          $("#accordion").delay(1).fadeIn("slow");

请参阅:http://jsfiddle.net/Jaybles/Vf97G/

答案 2 :(得分:0)

与所有事情一样,我是个白痴。事实证明,jQuery的制造者一直都知道这个问题,并在autoHeight和clearStyles中编程来解决这个问题。如果其他人在使用AJAX的手风琴效果时遇到类似的div截断错误,您将需要使用其中一个参数来纠正它。它与delay()与fade()效果交互以创建0个高度元素的方式有关。 autoHeight将它们的高度重置为最高元素,clearStyles会在事件中完全重置它们。