Последовательный порядок функций Javascript

0

У меня проблема с Javascript. У меня есть список названий статей, которые при нажатии на заголовок соответствующая статья появляется с правой стороны (исправлена в верхней части страницы). У меня есть эти статьи, чтобы угаснуть в/из с помощью Javascript. У меня также есть функция, которая, когда вы прокручиваетесь вниз и нажимаете на заголовок статьи, медленно пролистывает страницу назад вверх.

Проблема заключается в том, что когда страница прокручивается вверх, и статья меняется одновременно, анимация на обоих становится довольно изменчивой, особенно в Safari. Есть ли способ сделать первую страницу прокруткой вверх, а затем внести изменения в статью?

Я в основном спрашиваю, есть ли возможность отключить функции Javascript один за другим, а не в одно и то же время?

Вот мой Javascript:

$(document).ready(function () {
   $('.scrollup').click(function () {
      $("body").animate({
         scrollTop: 0
      }, 'slow');
      return false;
   });
   $('.articlelist ul li').click(function() {
      var i = $(this).index();
      $('.fullarticle').fadeTo(500,0);
      $('#article' + (i+1)).fadeTo(500,1);
   });
});

Любая помощь была бы чрезвычайно оценена!

спасибо

  • 2
    Используйте функции обратного вызова, чтобы запускать их один за другим. См. Api.jquery.com/animate и посмотрите на complete функцию.
Теги:
function

3 ответа

2

Я предполагаю, что вы хотите сохранить функциональность кликов в своем списке статей, и только элементы с прокруткой класса имеют 2 анимации.

$(document).ready(function () {

    $('.articlelist ul li').click(function () {
        var i = $(this).index();
        if ($(this).is(".scrollup")) {
            $("body").animate({
                scrollTop: 0
            }, 'slow', function () {//when animation completes
                fadeArticle(i);
            });
        } else {
            fadeArticle(i);
        }

    });

    function fadeArticle(i) {
        $('.fullarticle').fadeTo(500, 0);
        $('#article' + (i + 1)).fadeTo(500, 1);
    }
});
  • 0
    ура, я пробовал это, но перестала работать функция прокрутки вверх ..
  • 0
    Можете ли вы предоставить образец HTML из списка статей?
Показать ещё 1 комментарий
1

В вашем вызове animate() вы хотите добавить функцию, которая будет вызываться после завершения. Функция анимации, предоставляемая JQuery, принимает функцию как необязательный параметр. Когда анимация завершает эту функцию.

Вы можете использовать что-то вроде этого:

$('.scrollup').click(function () {
    $("body").animate({
        scrollTop: 0
    }, 'slow', showArticle);
    return false;
});

showArticle будет вызовом функции, которая затухает в статье, как анонимный, в вашем прослушивателе кликов. Вам, вероятно, потребуется какой-то способ передать аргумент о том, какую статью следует показывать.

  • 1
    showArticle() является вызовом функции
  • 2
    это должен быть showArticle , иначе вы showArticle эту функцию немедленно
Показать ещё 3 комментария
0

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

$(document).ready(function () {
scrollTop(showArticle());
});


function scrollTop(callback) {
    $('.scrollup').click(function () {
        $("body").animate({
            scrollTop: 0
        }, 'slow');
        callback;
    });
}

function showArticle() {
    $('.articlelist ul li').click(function () {
        var i = $(this).index();
        $('.fullarticle').fadeTo(500, 0);
        $('#article' + (i + 1)).fadeTo(500, 1);
    });
}
  • 0
    обе функции по-прежнему выполняются одновременно
  • 0
    Я не верю, что этот код сильно отличается от примера, приведенного в вопросе. Он добавляет двух слушателей щелчка на готовом документе, но первый слушатель использует обратный вызов для добавления второго слушателя.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню