Я немного удивлен странными ответами, данными здесь. Вопрос немного старше, но я думаю, что другие все равно будут искать и находить это, так что давайте:
Прежде всего, delay () не принимает функцию обратного вызова. Если вы хотите отложить какое-либо действие, вы должны поместить delay () в цепочку точечных обозначений перед действия:
$('#image1').delay(800).show('fast');
Это будет ждать 0,8 секунды, а затем быстро показывать изображение (длительность «быстро» = 0,2 секунды).
Во-вторых, если у вас есть несколько действий, которые вы хотите запустить одновременно , вы просто пишете их одно за другим :
$('#image1').show('fast');
$('#image2').show('fast');
Таким образом, они все начнутся в одно и то же время , поэтому приведенный выше код будет воспроизводить постепенную анимацию # image1 и # image2 параллельно!
Если вы хотите запустить несколько анимаций с разными задержками, вы комбинируете обе стратегии и просто делаете:
$('#image1').show('slow');
$('#image2').delay(1000).show('slow');
$('#image3').delay(1600).show('slow');
$('#image4').delay(2000).show('slow');
В зависимости от задержек и продолжительности, это позволяет воспроизводить анимации с промежутками между ними (2 начинается с задержкой после окончания 1), последовательно (3 запускается, когда 2 только что закончились, длительность «медленная»). составляет 600 мс) и задерживается, но с перекрытием (4 запуска, в то время как 3 все еще работает). Все, что вам нужно сделать, это адаптировать ваши задержки и продолжительность. На самом деле это ответ на ваш вопрос и самый универсальный способ сделать то, что вы хотите.
Слово о функции обратного вызова : доступно с show (), animate () и некоторыми другими методами (но не с задержкой, как вы пытались!) И в основном необходимо, если вы хотите делать более сложные вещи после завершения анимации. Будьте осторожны: когда ваш селектор соответствует нескольким элементам, например, $('#image1, #image2')
, обратный вызов будет вызываться несколько (!) Раз - по одному разу для каждого элемента в вашем наборе. Это может привести к очень неожиданным результатам (быстрый совет: во избежание этого ищите информацию о методах jQuery when () / then ()).
Наконец, ради полноты, если вы просто хотите запустить несколько анимаций на одинаковых элементах (элементах) - одна анимация за другой и с возможными задержками между - вы можете просто сделать ...
$('#image1').show('fast').hide('slow').delay(500).show('slow').hide('fast');
Это быстро покажет изображение, затем медленно скроет его, затем подождет полсекунды, затем покажет медленно и затем скроет быстро.