Воу, воу. По осторожней. Это не баг. Это логика работы. Вот:
$(document).on('click', 'img.star', function(){
console.log("hi");
});
Почему так? Если после загрузки js добавить новые элементы, то на них не будет еще обработчика события. Поэтому мы ставим обработчик события на корневом элементе(потому что он уже загружен), и т.к. событие клика всплывает вверх по DOM, то корневой элемент всегда(почти всегда, т.к. всплытие можно остановить в "ручную") получает это события. По этому, мы говорим ему: "Лови событие click, и если инициатором данного события является элемент с таким-то селектором, то выполни такую то функция."