1) Загружать HTML-структуру с сервера и назначать обработчики событий (классическая схема)
2) Загружать HTML с подключённым js-приложением, в котором есть всё необходимое, при этом BODY пуст (шаблоны на клиенте)
Вот примеры реализации:
1)
http://constantant.ru/client-tpl-test/classic/
2)
http://constantant.ru/client-tpl-test/on-client/
При клике на блок с именем должен появиться алерт.