Aetae вы не понимаете о чем я говорю,и при чем здесь основы.Событие клик( как вы говорите когда-нибудь) произошло сейчас и значит переменная category_id должна инициализироваться каким-то значением.те. после клика category_id должна сохранить значение и это значение передаться в функцию getCategoriesByParent(category_id);
P.S if здесь не причем не работает как с ним так и без него тут скорее вопрос видимости переменных почитайте
http://habrahabr.ru/post/78991/