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))