0

更新:好的,所以我看到我可以将每个 attr 替换包含在计时器的功能中。这意味着我这样做了五次;每个图形一次。但是,有没有更清洁的方法来做到这一点?谢谢

好的,所以我有五个不同的图像要替换 src 。但是,我希望每个顺序..替换第一个,然后是第二个等。

由于我正在更改属性源,因此动画 que 将无济于事。

我尝试了简单的计时器插件并将其放入一个函数中,然后在每次 attr 替换后调用该函数,但所有 attr 都发生在函数调用之前。

然后,我将计时器函数、attr 替换为对计时器函数的调用都在一个函数中,加载了文档并调用了它,但是 attr 一次性发生,然后是函数调用。

所以,这是我在上面解释过的最后一件事:

$(document).ready(function() {
 function holdIt(){
  myTimer = $.timer(2000,function(){
   alert("yes");
  });
 };
function doMe() {
$('#visit').attr('src', 'images/visitGrow.jpg');
holdIt();
$('#real').attr('src', 'images/realGrow.jpg');
holdIt();
$('#life').attr('src', 'images/lifeGrow.jpg');
holdIt();
$('#retirement').attr('src', 'images/retirementGrow.jpg');
holdIt();
$('#center').attr('src', 'images/centerGrow.jpg');
};

doMe();
 });
 </script>

我知道我错过了一些东西,因为它必须很容易完成,但我还没有。任何指针?PS ...我正在为计时器使用简单的插件。

另外,我应该注意,我只是在每次 attr 替换后寻找暂停,所以 alert('yes'); 是,我以为我会返回 false 或 null;管他呢。

4

2 回答 2

1
(function () {
    var items = $("#visit, #real, #life, #retirement, #center");
    var len = items.size();
    var urls = ["images/visitGrow.jpg", "images/realGrow.jpg", .........];
    var i = 0;

    function step() {
        items.eq(i).attr("src", urls[i]);
        i += 1;
        if (i >= len) {
            return;
        }
        setTimeout(step, 2000);
    }

    step();
})();

顺便说一句,自执行包装函数在这里创建一个本地范围,这样你就不会污染全局命名空间......

于 2010-10-01T20:06:52.757 回答
0

您可以使用一个简单的间隔,如下所示:

$(function() {
  var imgs = ["visit", "real", "life", "retirement", "center"], i=0,
  timer =  setInterval(function() {
    $("#" + imgs[i]).attr("src", "images/"+imgs[i]+"Grow.jpg");
    if(i++ == imgs.length) clearInterval(timer);
  }, 2000);
});

这利用了您的图像 URL 有一个约定,所以我们只是每 2 秒遍历一次数组,然后到达终点,间隔不会再次触发。

于 2010-10-01T20:18:58.943 回答