Используйте метод appendTo
$("<p><a href='#'>" + this.code + "</a></p>").appendTo('#modulesList')
.click(function(){
alert($(this));
})
jQuery ~ всегда возвращает основной элемент: теперь ваш селектор является элементом dom, и он создается и возвращается как объект jQuery.
И чтобы ответить на ваш вопрос, почему вы получаете 5 оповещений. Перед тем, как связать событие click с #modulesList
по одному для каждого объекта в массиве данных. (Вот почему 5 предупреждений)
Вы также можете сохранить <p><a>...
в переменной, например:
var pAndATag = $("<p><a href='#'>" + this.code + "</a></p>");
$(modulesList).append(pAndATag);
надеюсь, вы видите, как это работает ...