I feel like I’m violating a lot of DRY rules here but can’t think of a better way to do this. I have two event methods (there are actually four total just showing two) that are doing a lot of similar actions but on different DOM elements. Is there a better way to re-factor this so I’m not repeating myself so much.
$('.user .expandDetails a').on('tap', function () {
var expandWrapper = $('.userFooter');
if ($('.userInfo .details').is(':hidden')) {
$('.userInfo .details').addClass('active').slideDown();
$('.userInfo .expandUserDetails').removeClass('down').addClass('up').addClass('active');
} else {
$('.userInfo .expandUserDetails').removeClass('up').addClass('down').removeClass('active');
$('.userInfo .details').removeClass('active').slideUp();
}
});
$('.user .paymentDetails a').on('tap', function () {
var expandWrapper = $('.paymentFooter');
if ($('.paymentInfo .details').is(':hidden')) {
$('.paymentInfo .details').addClass('active').slideDown();
$('.paymentInfo .expandPaymentDetails').removeClass('down').addClass('up').addClass('active');
} else {
$('.paymentInfo .expandPaymentDetails').removeClass('up').addClass('down').removeClass('active');
$('.paymentInfo .details').removeClass('active').slideUp();
}
});
Please include code samples where applicable somewhat new to jquery.