Ну, скорее всего, когда этот код запускается кнопки нет. Сделали бы песочницу, со своим примером можно было бы сказать наверняка. А так — только угадывать
siza, Раз в песочнице код работает, значит проблема не с самим кодом а в чем то другом. Например в том как вы этот код подключаете. Или его ломает какая-то другая часть страницы.
siza, песочницы по умолчанию js вставляют в конец body или добавляют событие на готовность документа и на момент запуска скрипта DOM подгружен. По этому везде сначала пишут
$(document).ready(function(){
// Ваш код
});
Так как многие "frontendеры" не знают как работает браузер.