jQuery сопоставляет элементы с .each и задерживает их обработку с помощью setTimeout? - PullRequest
2 голосов
/ 06 марта 2011

Попытка сопоставить элементы и запустить их через заданные интервалы с помощью .each (), но не может получить правильную ссылку на сопоставленный элемент.

Это соответствует правильно, но все они запускаются одновременно:

$("div[id^='data_field'] input:submit").each(function(index) { setTimeout(console.log($(this)),1000*index );  });

Это вызывает их правильно, но совпадение элементов идет не так:

$("div[id^='data_field'] input:submit").each(function(index) { setTimeout(function(){ console.log($(this)); },1000*index );   });

Как правильно понять? И да, это должно быть с .each ...

Ответы [ 3 ]

2 голосов
/ 08 марта 2011

«this» становится чем-то другим, когда он ограничен функцией внутри setTimeout.Если вы храните информацию в $(this) за пределами setTimeout, то это работает.Взгляните на эту скрипку http://jsfiddle.net/VZwFB/1/

1 голос
/ 22 декабря 2011

Вот пример .each с задержкой с использованием функции jQuery .delay():

$('#show-articles').click(function(event) {
  var delayInterval = 1;
  $('.articles').each(function(){
    $(this).delay(delayInterval * 50).fadeIn()
    delayInterval++;
  })
  event.preventDefault();
})

… конечно, вам нужно адаптироваться к вашим потребностям.

0 голосов
/ 06 марта 2011

Вы пытались использовать Jquery Delay ?

...