Скорее всего, это из-за того что у вас указаны два события touchstart и click
Во время тапа сначала происходит событие тачстарт, а позже эмулируется событие клик
И у вас меню сначала показывается и мгновенно скрывается
Попробуйте оставить просто тачстарт
$(document.body).on('touchstart ', '#menu-button', function() {