Javascript jQuery AJAX.each()未停止

Javascript jQuery AJAX.each()未停止,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,不确定标题是否有意义,但这是我的问题 我目前使用Dropbox共享家庭照片,试图根据家庭照片的内容将其全部放入各自DIV中的HTML页面 我通过一个JSON文件加载它们,如下所示 [ { "Birthday": "10" }, { "Camping": "20" }, { "July Fourth": "50" } ] 并使用jQuery.ajax加载它们 $(document).ready(fun

不确定标题是否有意义,但这是我的问题

我目前使用Dropbox共享家庭照片,试图根据家庭照片的内容将其全部放入各自DIV中的HTML页面

我通过一个JSON文件加载它们,如下所示

[
    {
        "Birthday": "10"
    },
    {
        "Camping": "20"
    },
    {
        "July Fourth": "50"
    }
]
并使用jQuery.ajax加载它们

$(document).ready(function () {
  $.ajax({
    url: 'events.json',
    success: function(response) {
      $.each(response, function() {
        $.each(this, function(name, photos) {
          $('#container').append('<div class="gallery" name="' + name + '"></div>');
          $('div[name="' + name + '"').append(function() {
            for ( var i = 1; i <= photos; i++) {
              if (i < 10) {
                $('.gallery').append('<a class="fancybox" rel="' + this + '" href="' + name + '/0' + i + '.jpg"><img class="img" src="' + name + '/0' + i + '.jpg" /></a>');
              } else {
                $('.gallery').append('<a class="fancybox" rel="' + this + '" href="' + name + '/' + i +'.jpg"><img class="img" src="' + name + '/' + i + '.jpg" /></a>');
              }
            }
          });
        });
      });
    }
  });
  $(".fancybox").fancybox();
});
$(文档).ready(函数(){
$.ajax({
url:'events.json',
成功:功能(响应){
$.each(响应,函数(){
$。每个(此项、功能(名称、照片){
$(“#容器”)。追加(“”);
$('div[name=“”+name+”).append(function(){

对于(var i=1;i我实际上已经找到了解决这个问题的方法,它非常简单,在我这方面是一个完整的derp

我刚刚将$('.gallery').append()更改为$(this.append())

另外,我知道JSON不太好,我已经解决了这个问题

$.getJSON("events.json", function(data) {
  $.each(data, function(index, d) {
    var name = d.name;
    var photos = d.count;
    $('#container').append('<div class="gallery" name="' + name + '"></div>');
    $('div[name="'+name+'"]').append(function() {
      for ( var i = 1; i <= photos; i++) {
        if (i < 10) {
          $(this).append('<a class="fancybox" rel="' + this + '" href="' + name + '/0' + i + '.jpg"><img class="img" src="' + name + '/0' + i + '.jpg" /></a>');
        } else {
          $(this).append('<a class="fancybox" rel="' + this + '" href="' + name + '/' + i +'.jpg"><img class="img" src="' + name + '/' + i + '.jpg" /></a>');
        }
      }
    });
  });
});
$.getJSON(“events.json”),函数(数据){
$。每个(数据,函数(索引,d){
var name=d.name;
var=d.count;
$(“#容器”)。追加(“”);
$('div[name=“”+name+“]”)。追加(函数(){

对于(var i=1;i这里是..希望它不是太复杂

// Kind of necessary in the way my solution works
function getPropertyName(prop, value) {
    for (var i in prop) {
        if (prop[i] == value) {
            return i;
        }
    }
    return false;
}

$(document).ready(function () {
    $.ajax({
        url: 'events.json',
        success: function(response) {
            $.each(response, function( index, gallery ) {
                // gallery[Object.keys(gallery)[0]] gets the first property of the gallery object
                var galleryName = getPropertyName(gallery, gallery[Object.keys(gallery)[0]]);
                var numPhotos = parseInt(gallery[galleryName]);

                // I used 'data-name' instead of 'name' as the attribute to keep it more in line with the HTML standard
                $('#container').append('<div class="gallery" data-name="' + galleryName + '"></div>');

                for (var i = 1; i <= numPhotos; i++) {
                    $('div[data-name="' + galleryName + '"').append(function() {
                        if (i < 10) {
                            $(this).append('<a class="fancybox" href="' + galleryName + '/0' + i + '.jpg"><img class="img" src="' + galleryName + '/0' + i + '.jpg" /></a>');
                        } else {
                            $(this).append('<a class="fancybox" href="' + galleryName + '/' + i +'.jpg"><img class="img" src="' + galleryName + '/' + i + '.jpg" /></a>');
                        }
                    });
                };
            });
            $('.fancybox').fancybox();
        }
    });
});
//我的解决方案的工作方式有点必要
函数getPropertyName(属性,值){
用于(道具中的var i){
如果(属性[i]==值){
返回i;
}
}
返回false;
}
$(文档).ready(函数(){
$.ajax({
url:'events.json',
成功:功能(响应){
$。每个(响应、功能(索引、图库){
//gallery[Object.keys(gallery)[0]]获取gallery对象的第一个属性
var galleryName=getPropertyName(gallery,gallery[Object.keys(gallery)[0]]);
var numPhotos=parseInt(画廊[galleryName]);
//我使用“数据名”而不是“名称”作为属性,以使其更符合HTML标准
$(“#容器”)。追加(“”);

对于(var i=1;i)如果你使用相同的JSON文件,那么你的每个循环都不正确。因为不需要每个循环使用两个。每个循环可以使用一个。我尝试删除$.each(response,function(){),并将下一个改为$.each(response,function(name,photos){完全没有图像加载请发布您在代码“events.json”中使用的同一个JOSN文件@TesoMayn你给我们看的JSON数组非常模糊。这些数字是什么意思?告诉我们
响应
变量的外观。
名称
照片
变量来自哪里?@TesoMayn我现在明白你的意思了。但这是我见过的最糟糕的JSON响应。格式非常糟糕,这就是问题所在这样就很难为你的问题写出一个干净的解决方案。比如
[{“galleryName”:“birth”,“numPhotos”:“10”},等等]
会更符合逻辑,但我认为你无法控制。哦,该死,你的答案比我的好!将它设置为可接受的答案。我两天都不能:哈哈,是的,我工作了一段时间。接受你的答案,这样人们就不会白来找了。