jQuery работает с элементами, которые были на странице на момент инициализации кода.
Если добавляются новые элементы - при помощи ajax'а или функций типа append() - то события не затрагивают их.
Как же работать с новыми созданными элементами DOM?
Оказывается для динамических элементов используется делегированная обработка событий.
Если кратко, то смысл делегирования в том, что обработчики "навешиваются" не на отсутствующие в dom элементы, а на существующий родительский объект.
Таким образом, при срабатывании соответствующего события , будет вызван данный обработчик для всех элементов, соответствующих селектору, даже если этих элементов не было во время объявлении обработчика (например при загрузке страницы).
Здесь есть 100% рабочий пример