Возможно стоит воспользоваться backbone.js/knockout.js. У них очень неплохо продумана работа с событиями и асинхронными запросами. Код становится понятнее и красивее. Если вы без предубеждений к фреймворкам (backbone отлично работает с другими библиотеками и никак с ними не конфликтует, весит 4 килобайта и не нагружает страницу, по опыту — супер).