0

我在这个页面上有 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 次 - 这将是非常大的代码。

请告诉我是否在循环中执行代码,以免重复多次?

4

3 回答 3

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
});
于 2013-01-29T15:07:12.430 回答
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);
于 2013-01-29T15:06:16.783 回答
0

您可以做的是您可以将测试作为数组并使用此代码

 for (i = 1 , i<=25 , i++)
  $.post("./main/", {
  record:i,
  opt:'get_res'
  }, function(data){
  $test[i]=data;
  });

  }, 15000);
于 2013-01-29T15:07:14.003 回答