JQuery исчезают в том же пространстве

0

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

Страница загружается с помощью скрытых div и только для того, чтобы затухать в соответствующем div, когда ссылка зависает. Если какой-либо div уже показан, он должен исчезать (или, в идеале, исчезать в следующий div).

Я уже создал два метода, но они имеют грязные результаты, особенно при случайном перемещении мыши по ссылкам; слишком много divs появляются, а анимации запускаются до того, как другие закончатся.

Любые идеи о том, как я могу сделать эту работу, будут высоко оценены; так что заменяется на следующий div.

Здесь что-то не удалось:

Версия 1

$(function () {
    $('#one-box').hide();
    $('#two-box').hide();
    $('#three-box').hide();

    // Box one
    $('#one-link').hover(function () {
        $('#two-box').fadeOut(300);
        $('#three-box').fadeOut(300);
        $('#one-box').delay(400).fadeIn(300);
    });
    // Box two
    $('#two-link').hover(function () {
        $('#one-box').fadeOut(300);
        $('#three-box').fadeOut(300);
        $('#two-box').delay(400).fadeIn(300);
    });
    // Box three
    $('#three-link').hover(function () {
        $('#one-box').fadeOut(300);
        $('#two-box').fadeOut(300);
        $('#three-box').delay(400).fadeIn(300);
    });
});


Версия 2

$(function () {

    $('#one-box').hide();
    $('#two-box').hide();
    $('#three-box').hide();

    // Box one
    $('#one-link').hover(function () {
        $('#two-box').animate({
            opacity: 'toggle',
            height: 'toggle'
        }, 'slow', function () {
            $('#three-box').animate({
                opacity: 'toggle',
                height: 'toggle'
            }, 'slow', function () {
                $('#one-box').animate({
                    opacity: 'toggle',
                    height: 'toggle'
                }, 'slow');
            });
        });
    });

    // Box two
    $('#two-link').hover(function () {
        $('#one-box').animate({
            opacity: 'toggle',
            height: 'toggle'
        }, 'slow', function () {
            $('#three-box').animate({
                opacity: 'toggle',
                height: 'toggle'
            }, 'slow', function () {
                $('#two-box').animate({
                    opacity: 'toggle',
                    height: 'toggle'
                }, 'slow');
            });
        });
    });

    // Box three
    $('#three-link').hover(function () {
        $('#one-box').animate({
            opacity: 'toggle',
            height: 'toggle'
        }, 'slow', function () {
            $('two-box').animate({
                opacity: 'toggle',
                height: 'toggle'
            }, 'slow', function () {
                $('#three-box').animate({
                    opacity: 'toggle',
                    height: 'toggle'
                }, 'slow');
            });
        });
    });

});
  • 0
    Как это терпит неудачу? Работает ли fadeIn в первый раз и дает сбой после первого раза? Можете ли вы описать, как именно ваш код не работает?
  • 0
    Кроме того, если вы используете Firebug в FF или Inspect Element (щелкните правой кнопкой мыши) в Google Chrome, отображаются ли какие-либо сообщения об ошибках?
Показать ещё 1 комментарий
Теги:

1 ответ

0

Попробуйте уменьшить время вашего fadeOut:

$('#one-link').hover(function () {
    $('#two-box').fadeOut(100);//100 ms as an example
    $('#three-box').fadeOut(100);
    $('#one-box').delay(400).fadeIn(300);
});

или вы можете попробовать как грубое решение:

$('#one-link').hover(function () {
    $('#two-box, #three-box').fadeOut(300, function() {
        $('#one-box').fadeIn(300);
    });
});
  • 0
    Спасибо за быстрый ответ ... Я попытался изменить время (первый метод, который вы предложили) и изменил его на скольжение, а не затухание, так как выглядит лучше при работе с ящиками разной высоты, но я все еще получаю ту же проблему, нет Независимо от того, как я меняю время, растирание ссылок может создать стек div'ов ... как я могу ждать (или останавливать) анимацию, прежде чем продолжить?
  • 0
    Попробуйте второй метод .... fadeIn не должен выполняться, пока fadeOut не завершится
Показать ещё 6 комментариев

Ещё вопросы

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