Возможна ли ошибка jQuery.delay? - PullRequest
0 голосов
/ 25 марта 2011

Я использую 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>

То, что это делает, загружает HTML, сгенерированный update.php, в макет аккордеона (то есть его свертываемое содержимое), и каждые 5 секунд он будет опрашивать update.php для нового HTMLпостепенно исчезать после исчезновения старого HTML.

Проблема возникает при чтении строки $("#accordion").delay(1);.С этой строкой, часть контента, которая может быть свернута, каким-то образом урезается и не будет «разворачиваться», как это должно происходить с соответствующим эффектом аккордеона.Все данные все еще там;Вы можете щелкнуть мышью и перетащить ее вниз.Он просто не отображается должным образом в браузере и не рисует правильно div или что-то еще.Просто удаляя эту строку, она загружается успешно и без проблем.

Я призываю вас попытаться воспроизвести мои результаты, и дайте мне знать, если вы можете найти обходной путь, потому что мне действительно нужна эта задержка там!Спасибо за чтение.

Ответы [ 3 ]

2 голосов
/ 25 марта 2011

delay () не заменяет setTimeout ().Он задерживает запуск анимации, но анимация не запускается (fadeOut там уже должен быть закончен)

0 голосов
/ 25 марта 2011

Как и во всем, я идиот. Оказывается, создатели jQuery знали об этой проблеме все время и программировали в autoHeight и clearStyles, чтобы решить эту проблему. Если кто-то еще сталкивается с подобной ошибкой усечения div с эффектом аккордеона AJAX, вы можете использовать один из этих параметров для его исправления. Это было связано с тем, как delay () взаимодействовал с эффектами fade () для создания 0 элементов высоты. autoHeight сбрасывает высоту их до самого высокого элемента, а clearStyles сбрасывает их полностью при событии.

0 голосов
/ 25 марта 2011

Если вы пытаетесь отложить затухание, ваш код должен выглядеть следующим образом:

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

См .: http://jsfiddle.net/Jaybles/Vf97G/

...