2

我想要做的是将数百个文件的列表存储在一个数组中,并使用 jquery load() 函数一个接一个地加载它们的内容。

我对 jquery 和 javascript 知之甚少,这是我设法编写的,但它不起作用。

var files=['index1c.html','index23c.html'];

for(var index = 0; index < files.length; index++){
    var file = files[index];

$('#result').load('file .desc');
}

我认为我在给出的变量文件中有一些问题load(),这是正确的方法吗?如果我直接写一个文件名代替file如下所示,它工作正常:

$('#result').load('index1c.html .desc');
4

3 回答 3

3

改变:

$('#result').load('file .desc');

到:

$('#result').load(file + ' .desc');

请注意,加载方法会在添加新内容之前删除元素的内容。您可以创建唯一 ID,例如result1, result2... 和代码:

for(var index = 0; index < files.length; index++){
    var file = files[index];
    $('#result' + (index + 1) ).load(file + ' .desc');
}

或者您可以使用类和eq方法:

var $results = $('.results')
for(var index = 0; index < files.length; index++){
    var file = files[index];
    $results.eq(index).load(file + ' .desc');
}

或者,如果您想附加data您可以使用$.get实用程序函数而不是load方法。

于 2012-12-25T08:20:47.577 回答
2

您正在使用文字 string 'file .desc'

看起来像你想要file + '.desc'的。

'a b'是字符串a b,而a + ' b'是带有附加到字符串的变量 a 的内容的字符串' b'

于 2012-12-25T08:20:55.273 回答
2

尝试使用jQuery.ajaxSetup({async:false});

{async:false}将保持其余代码的执行。一旦你得到 ajax 代码的响应,剩下的代码就会被执行。执行ajax响应后重置async为truejQuery.ajaxSetup({async:true});

所以最终的代码将是

var files=['index1c.html','index23c.html'];

for(var index = 0; index < files.length; index++){
    var file = files[index];
    jQuery.ajaxSetup({async:false});
    $('#result').load('file .desc');
    jQuery.ajaxSetup({async:true})
}
于 2015-02-04T12:25:42.920 回答