Javascript 如何处理ajax成功数据';它的第一个价值观与其他价值观不同

Javascript 如何处理ajax成功数据';它的第一个价值观与其他价值观不同,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,考虑以下代码: 'use strict'; $.getJSON('/img/content/galleries/', function(directories) { $("#gallery").text(""); for (var dirnum = 2; dirnum < directories.length - 1; dirnum++) { (function(dirnum) { var folder = '/img/content

考虑以下代码:

'use strict';
$.getJSON('/img/content/galleries/', function(directories) {
    $("#gallery").text("");
    for (var dirnum = 2; dirnum < directories.length - 1; dirnum++) {
        (function(dirnum) {
            var folder = '/img/content/galleries/' + directories[dirnum] + '/';
            $.ajax({
                url: folder,
                success: function(data) {
                        $(data).find("a").attr("href", function(i, val) {
                            if (val.match(/\.jpg|\.png|\.gif/)) {
                                $("#gallery").append('<a class="fancybox-thumb" href="' + folder + val + '" rel="fancybox-thumb"><div class="gallerypictures" style="background-image:url(' + folder + val + ')"></div></a>');
                            } // end val.match
                        }); // end data.find
                    } // end success
            }); // end ajax
        })(dirnum); // end closure
    } // end for loop
}); // end getJSON
“严格使用”;
$.getJSON('/img/content/galleries/',函数(目录){
$(“#图库”)。文本(“”);
for(var dirnum=2;dirnum
它只需检索“gallery”文件夹的子目录,然后通过ajax调用,获取文件名并按字母顺序将每个子目录(例如gallery1和gallery2)的内容输出到#gallery div

这段代码可以正常工作并正确输出所有文件。以下是我所缺少的:

对于每个子目录,我希望以不同于其他子目录的方式处理第一个映像(我只想在每个子目录的第一个映像中添加一个类)

我对ajax业务相当陌生,所以我有点困惑如何过滤每个子目录的第一个图像。或者也许有一种更简单的方式来思考这个问题

提前谢谢


Erick p.

在find函数的回调函数中使用if语句,如:

$(data).find("a").attr("href", function(i, val) {
  if(i === 0){
     // whatever you want to do to first element in here

   } // end val.match
});

尝试在
处为
循环添加变量
i
,将
i
传递给iLife,使用
if
条件检查
i
是否等于
0

for (var dirnum = 2, i = 0; dirnum < directories.length - 1; dirnum++, i++) {
    (function(dirnum, i) {
        var folder = '/img/content/galleries/' + directories[dirnum] + '/';
        $.ajax({
            url: folder,
            success: function(data) {
                $(data).find("a").attr("href", function(_, val) {
                    if (val.match(/\.jpg|\.png|\.gif/)) {
                        if (i === 0) {
                          // do stuff
                        }
                        $("#gallery").append('<a class="fancybox-thumb" href="' + folder + val + '" rel="fancybox-thumb"><div class="gallerypictures" style="background-image:url(' + folder + val + ')"></div></a>');
                    }
                    // end val.match
                });
                // end data.find
            }// end success
        });
        // end ajax
    })(dirnum, i);
    // end closure
}
for(var dirnum=2,i=0;dirnum
很抱歉,它不起作用了。我检查了I和val的值,得到的结果是:I:0到10(6个图像的每个子目录的值是-11的2倍);O=D?C=M;O=A?C=S;O=A?C=D;O=A然后是“Gallery”的路径,然后是gallery1中6个图像的名称(一个接一个),然后我又得到了同样的结果,但现在gallery2文件名在末尾……我现在更困惑了……当我添加代码时,它不再输出任何图像。我过去从未使用过JSFIDLE,但我认为我的示例很难重新创建,因为它涉及从php获取初始数据。你看到我在下面对I和val变量输出的评论了吗?有什么闪烁其词的想法吗?请参阅更新的帖子。是否需要检查第一个
$.ajax()
调用?这已经很接近了。现在它正在处理gallery1的所有图像。我真正需要的是gallery1的第一张图片,然后是gallery2的第一张图片……天哪,这可不容易!尝试将
if
中的条件更改为
if($(“#图库a”.length==0 | |$(“#图库a.length==1))