我要做的是在数组中存储数百个文件的列表,并使用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');
答案 0 :(得分:3)
变化:
$('#result').load('file .desc');
要:
$('#result').load(file + ' .desc');
请注意,load方法会在追加新内容之前删除元素的内容。您可以创建唯一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
方法。
答案 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})
}