Незаменимый сервис -
https://beautifier.io, советую пользоваться им перед каждой публикацией вашего кода на этом форуме.
$.post('', function(data) {
var link = []
for (key in data) {
// .find возвращает не массив элементов, а новую коллекцию jQuery.
// + вы ищите ваши ссылки в элементе, который с большой вероятность
// будет размонтирован сразу после возвращении вам результата,
// т.е. ваши ссылки на странице существовать не будут
link = $(data[key].content).find('a.link');
// Даже если вы сначала засунете новый контент в блок, который присутствует на странице,
// то в DOM останутся только узлы, которые вы добавите в последней итерации.
// Тоже самое касается и вашей переменной `link`
$(div).html(data[key].content);
}
// Тут может быть ошибка из-за того, что вы пытаетесь перебрать свойства объекта jQuery
for (key in link) {
if (link[key].attributes) {
// Т.к. ваш массив `link` содержит ссылки на размонтированные элементы,
// то никакого смысла операция ниже не несет.
// Элементов, на которые вы пытаетесь повесить слушателей нет в DOM
$(link[key]).on('click', function(e) {
console.log(link[key])
})
}
}
})
Попробуйте как-то так:
$.post('', function(data) {
$(div)
.html(
Object.values(data).join('')
)
.find('a.link')
.filter(function() {
return Boolean(this.attributes);
})
.on('click', function() {
console.log(this);
});
});