jquery load()不使用数组循环

时间:2012-12-25 08:19:15

标签: javascript jquery arrays loops

我要做的是在数组中存储数百个文件的列表,并使用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');

3 个答案:

答案 0 :(得分:3)

变化:

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

要:

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

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

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方法。

答案 1 :(得分:2)

您正在使用文字字符串'file .desc'

看起来你想要file + '.desc'

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

答案 2 :(得分:2)

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

{async:false}将执行休息代码。一旦得到ajax代码的响应,其余的代码将被执行。执行ajax响应后,重置为async为真jQuery.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})
}