Simplify jQuery animation with callback

Looking for feedback on how to better improve the code below to simplify the code below.

var animateTop = $('body'); if ($('html').hasClass('lt-ie9')) {
animateTop = $('html'); }$('.var').on('click', function() {
animateTop.animate({
scrollTop: $('footer').offset().top }, { queue: false, duration: 1500, complete: function() { if(!$('.foo').hasClass('active')) {
$('.foo').toggleClass('active');$('.bar').slideToggle();
}
}
});
return false;
});


Can't really tell what your code does in real life, thus the following optimization/organization might not work. However, following generic tips, here's what I got:

//we can reduce DOM fetching by fetching html first
//caching it as well as other frequently used elements
//assuming that they never change in the course of your page's life
var html = $('html') , footer =$('footer')
, foo = $('.foo') , bar =$('.bar')
, options = {
queue: false,
duration: 1500,
complete: function () {
if (!foo.hasClass('active')) {
foo.toggleClass('active');
bar.slideToggle();
}
}
}
;

//then here, we fetch body only when it's not IE9+ thus reducing operations
html = html.hasClass('lt-ie9') ? html : $('body');$('.var').on('click', function (e) {

//i think the properties can't be cached since it may need current values
//however, your options can be cached since they are static values
html.animate({
scrollTop: footer.offset().top
}, options);

//an answer as to when to use return false vs preventDefault
//you can use either, depending on the situation
//http://stackoverflow.com/a/1357151/575527
return false;
});