2013-11-27 3 views
1

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

$(document).ready(function() { 
    $('#test').click(function() { 
      $('#preheader').slideToggle('slow', 'easeOutBounce'); 
    }); 
}); 

Теперь я хочу использовать два разных смягчения. Если он открывается, я хочу, чтобы он открыл/нажал линейный. Когда он закрывается, я хочу, чтобы он подпрыгнул.

Как я могу добиться такого же эффекта slideToggle, но только с двумя различными ослаблениями для каждого события open/close?

+1

Добавьте оператор if, который проверяет, отображается ли контейнер, который вы переключаете. Если он использует один метод. Если нет, используйте другой метод. –

ответ

1

Используйте флаг, чтобы знать, когда элемент открыт или закрыт, и установить анимацию и ослабление на его основе:

$(document).ready(function() { 
    $('#test').on('click', function() { 
      var open = $(this).data('open'), 
       easing = open ? 'easeOutBounce' : 'easeInBounce'; 

      $('#preheader')[open ? 'slideUp' : 'slideDown']('slow', easing); 

      $(this).data('open', !open); 
    }); 
}); 

FIDDLE

+0

работает как очарование, спасибо! – paelzer

+0

Два вопроса: вместо slideUp и slideDown можно каким-то образом использовать анимацию? Также я хочу «предварительно обработать» этот div и дать ему верхнее смещение минус его высота. – paelzer

3

Что-то подобное может работать:

$(document).ready(function() { 
    $('#test').click(function() { 
      $('#preheader').slideToggle('slow', ($('#preheader').is(':visible') ? 'easeOutBounce' : 'slideDown')); 
    }); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^