это всегда хорошо для Вы всегда должны размещать свой код внутри onload
события
$(function() {
$(".menu_button").click(function()
{
//alert("onMenuClick");
$(".menu_button").removeClass("menu_button_selected");
$(this).addClass("menu_button_selected");
});
});
Причина в том, что некоторые браузеры разрешают выполнение JS, даже если дерево DOM еще не загружено полностью, что приводит к тому, что элементы отсутствуют или недоступны. Функция jQuery $(function() { ... });
гарантирует, что код внутри будет выполняться только тогда, когда все загружено и готово.
** ОБНОВЛЕНИЕ **
Ваши script
теги должны выглядеть как
<script type="text/javascript">
// js here
</script>
И здесь - это тест на jsfiddle, показывающий, что он работает для кода, который вы дали. Если это не работает для вас, то ваша проблема в другом месте. Я предлагаю вам использовать Google Chrome и его инструмент для разработки для отладки вашего Javascript.