«не очереди» неанимирующие свойства: attr - PullRequest
0 голосов
/ 01 октября 2010

ОБНОВЛЕНИЕ: хорошо, поэтому я вижу, что я могу просто включить каждую замену атрибута в функцию таймера.Это означает, что я делаю это пять раз;один раз для каждого графика.Но есть ли более чистый способ сделать это?Спасибо

хорошо, поэтому у меня есть пять разных изображений, для которых я хочу заменить src.Однако я хочу, чтобы каждый из них был последовательным ... заменить первое, затем второе и т. Д.

Поскольку я меняю источник атрибута, очередь анимации не поможет.

Я попробовалпростой плагин таймера и вставьте его в функцию, затем вызывайте функцию после каждой замены атрибута, но все атрибуты происходят до вызова функции.

Затем я помещаю функцию таймера, заменяя атрибут на вызовы таймеравсе функции внутри функции, загрузили документ и вызвали его, но все же, 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 ... Я использую простой плагин для таймера.

Кроме того, я должен отметить, что я просто ищу паузу после каждой замены атрибута, чтобы там было предупреждение ('yes');я думал, что просто верну false или null;или что угодно.

Ответы [ 2 ]

1 голос
/ 02 октября 2010
(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();
})();

Кстати, самовыполняющаяся функция-обертка предназначена для создания локальной области видимости, чтобы вы не создавали глобальное пространство имен ...

0 голосов
/ 02 октября 2010

Вы можете использовать простой интервал, например:

$(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 секунды, тогда конецдостигнут интервал просто не срабатывает снова.

...