Код в $(function() { })
имеет свою собственную область, поэтому, когда вы определяете функцию в ней, эта функция существует только в этой области.Тем не менее, у вас есть:
<button onclick="grid()">grid</button>
, который ищет функцию с именем "grid" в глобальной области видимости (где она не существует).
В идеале, если вы используете jQuery,Вы бы сделали что-то вроде:
<button id="grid">grid</button>
$(function(){
$('#grid').on('click', function() {
$("#main").hide();
});
});