Сначала формируется DOM, затем, по идеи, нужно применить delay к новым элементам.. Но дело в том, что jquery не находит новые элементы, хотя в браузере их прекрасно видно.
$(document).ready(function(){
$.getJSON("../js/districts.json", function(data) {
var root = $('.districts'),
box;
for (var k in data) {
if (data.hasOwnProperty(k)) {
box = $('<div calss="' + k + '"></div>');
for (var i in data[k].img) {
if (data[k].img.hasOwnProperty(i)) {
$('<div class="popup"></div>')
.html('<img src="/img/' + k + '/' + data[k].img[i].name + '.png" />')
.appendTo(box);
}
}
box.appendTo(root);
}
}
});
});
$(document).on('click', '.map', function () {
console.log($('.askold .popup'));
$('.askold .popup').each(function(i, el) {
$(el).delay(3000 * i).fadeIn(1000);
});
});
Консоль, при клике курсора, выдает следующие данные о новых элементах
undefined