Skrypt ładowany i wykonywany jest wcześniej, niż załadowanie contentu strony, co za tym idzie - odnoszenie się do $("#button"), to tak naprawdę odniesienie sie do niczego. Zrób to tak:
$(document).ready(function(){
$("#button").click(function(){
$("#witaj").hide();
});
});
Albo jeszcze lepszy sposób, na koniec css dodaj takie linijki:
.hidden{
display: none;
}
i javascript:
window.addEventListener('DOMContentLoaded', function(){
document.getElementById('button').addEventListener('click', function(){
document.getElementById('witaj').classList.add('hidden');
});
});
Do użycia tego skryptu nie potrzebujesz jQuery, pzdr! :-)