Единственный способ, которым вы могли бы «оптимизировать» это использование обратных вызовов вместо ручной задержки функций. .slideUp()
и .slideDown()
принимают вызовы, которые будут выполнены после завершения анимации.
Лучше всего использовать цепочку, поэтому вам не нужно воссоздавать объекты (см. Функции обратного вызова).
Также я изменил функцию bind()
с новой on()
, которая была добавлена в jQuery 1.7.
$('.newsbox_toggle').on('click', function () {
//define speed for effect
var $speed = 400;
//check to see if the class 'open' exists then run
if ($('.newsbox_toggle').hasClass('open')) {
//scroll to the top of the newsbox
$('html, body').animate({scrollTop: $('#header_lower').offset().top}, $speed);
$('#newsbox_content_wrapper').slideDown($speed, function() {
$('.newsbox_expand').html('Click to Close News Feature.').addClass('rotate');
});
$('.newsbox_toggle').removeClass('open');
} else {
//scroll back to top of body
$('html, body').animate({ scrollTop: 0 }, $speed);
$('#newsbox_content_wrapper').slideUp($speed, function() {
$('.newsbox_expand').html('Click to Read More.').removeClass('rotate');
});
$('.newsbox_toggle').addClass('open');
}
});
Если вы используете jQuery <1.7, используйте <code>.click(), что является сокращением для .bind()
.
$('.newsbox_toggle').click(function () {
// ...
});