此页面上有25个元素:
<div id="test1"></div>
<div id="test2"></div>
<div id="test3"></div>
<div id="test4"></div>
<div id="test5"></div>
此外,我还有div中更新html的代码:
setInterval(function() {
$.post("./main/", {
record:1,
opt:'get_res'
}, function(data){
$test1=data;
});
}, 15000);
要更改所有块中的html,我需要运行此代码5次,例如:
setInterval(function() {
$.post("./main/", {
record:1,
opt:'get_res'
}, function(data){
$test1=data;
});
}, 15000);
setInterval(function() {
$.post("./main/", {
record:2,
opt:'get_res'
}, function(data){
$test2=data;
});
}, 15000);
.....
.....
setInterval(function() {
$.post("./main/", {
record:3,
opt:'get_res'
}, function(data){
$test3=data;
});
}, 15000);
例如,对于25个元素div,需要将此代码写入25次 - 这将是非常大的代码。
请告诉我是否在循环中执行代码,以免多次重复?
答案 0 :(得分:4)
你应该看看http://api.jquery.com/each/功能:
更新:基本上您可以使用任何选择器来查找元素
假设您在页面上有一个简单的无序列表:
<ul>
<li>foo</li>
<li>bar</li>
<li class="findMe">foo2</li>
<li class="findMe">bar2</li>
</ul>
您可以选择列表项并对其进行迭代:
$( ".findMe" ).each(function( index ) {
//do something ... post or anything else
});
答案 1 :(得分:2)
以某种方式迭代元素,使用索引或从ID中提取数字,并存储在数组或对象中,无论什么最合适:
var test = {};
setInterval(function() {
$('div[id^="test"]').each(function(i, ele) {
(function(idx) {
$.post("./main/", {
record: idx,
opt:'get_res'
}, function(data){
test[idx] = data;
});
})(i+1);
});
}, 15000);
答案 2 :(得分:0)
你可以做的是你可以将测试作为数组并使用此代码
for (i = 1 , i<=25 , i++)
$.post("./main/", {
record:i,
opt:'get_res'
}, function(data){
$test[i]=data;
});
}, 15000);