У меня есть div, который является полупрозрачным, а затем хочет переключить его на непрозрачный. Но jQuery.delay(); метод, похоже, не работает здесь. Я пробовал .fadeIn(); вместо этого, и это работает с задержкой, но это не сменяет классы.
.delay() используется для элементов, которые являются частью queue , например анимации. Простой addClass не поставлен в очередь.
Вы можете использовать setTimeout .
В качестве альтернативы вы можете добавить ненужный элемент в очередь с помощью .queue() , хотя я думаю, что setTimeout будет лучше.
Я знаю, что это старый вопрос, но по-прежнему много трафика из Google, поэтому я добавлю два цента,
Вы можете использовать что-то вроде
Вы можете передать функцию в очередь, чтобы выполнить их после задержки. Я использовал это для очень похожих примеров.
37 просмотра
2 ответа
1097 Репутация автора
Я пытаюсь выполнить числовую работу с последовательностью и определенной задержкой. Я написал эти коды. Я использую пользовательский интерфейс jquery на своей странице.
Этот код работал в настоящее время на HTML-странице, но в моем проекте (MVC) работал без задержки. Пожалуйста, совет.
Ответы (2)
-1 плюса
27 Репутация автора
У меня тоже была эта дилемма. Вы пытались поместить их в одну строку? Я не думаю, что JQuery может сделать несколько задержек одновременно.
Попробуйте это: (Может, дайте нам еще немного кода, пожалуйста)
Автор: Stephen Размещён: 13.03.2016 07:27
1 плюс
473183 Репутация автора
.delay() работает только с методами, которые используют очередь анимации jQuery, например с анимациями, потому что она работает, вставляя задержанную анимацию в очередь, поэтому единственные вещи, которые ее ждут, это другие вещи в очереди анимации. Он не работает с обычными методами jQuery, поскольку они просто выполняются сразу же, хотя в очереди анимации есть задержка.
Чтобы сделать реальную задержку, вы можете просто использовать обычную setTimeout() .
ve следующий фрагмент JavaScript:
В то время как #dashboard вожидание, он должен обрабатывать все эти изменения CSS-класса. После этого изменения должно отображаться #dashboard снова. Итак, я установил delay() между добавлением и удалением standby -учебный класс. Чтобы увидеть, работает ли я, я добавил слишком большую продолжительность 3sek.
Но это незадержка! Почему это нет? Я нене вижу этого .
.delay() будет только задерживать анимации в JQuery. Чтобы установить фактическую задержку, вы можете использовать. setTimeout()
Это выполнит код в . do stuff . через 3 секунды (3000 миллисекунд)
Вы все еще можете иметь .addClass() за исключением того, что теперь ваш класс будет использовать эти свойства перехода, и вы выигралине нужно .delay ().
поэтому мы удаляем класс в обратном вызове ajax:
Попробуйте использовать .queue()
как вы ожидаете . Вот как это работает:
Это немедленно запустит изменение атрибута. Зачем? Поскольку изменение атрибута нет часть «анимация», Задержка может использоваться только с функциями анимации.
Если вам нужны только два изображения, вам может быть проще сложить вместе два изображения и постепенно увеличивать и уменьшать их по мере необходимости.
Если вы хотите расширить это на много изображений, попробуйте использовать более надежный «.animate» функция исчезать и исчезать. «Анимации» может быть задана функция обратного вызова, которая будет вызвана после завершения. «
Все ваши задержки начинаются на $(document).ready();
Думайте об этом так. Когда документ готов, JS начинает выполнять все, что находится внутри этой функции, первая задержка, которую он выполняет, такова: $(«#image1»)..fadeIn(3000);
Это запустит задержку 5000 мс, а затем fadeOut() с продолжительностью 3000 мс. Это fadeOut синхронно с задержкой, но следующая строка кода полностью асинхронна этой.
Затем он переходит к следующей строке. И так далее. Это победилоt ждать, пока ваша задержка не закончится, он просто начинает рассчитывать на фон.
.delay() Складывается при применении к одному и тому же элементу:JSFiddle
Я оставляю это на всякий случай, если кто-то запутался, как я
delay будет работать только на действия, которые проходят через анимационный конвейер, и выигралне может влиять на время мгновенных атомных операций, подобных этому. Для того, чтобы отложить такие вещи, как добавление или удаление классов, вы можете использовать. setTimeout
метод .delay () позволяет нам задерживать выполнение функций, которые следуют за ним в очереди. Его можно использовать со стандартной очередью эффектов или с пользовательской очередью.
Метод .delay () лучше всего подходит для задержки между поставленными в очередь эффектами jQuery. Потому что это ограниченоэто неt, например, предложить способ отменить задержку:.delay () не является заменой JavaScript ‘Собственная функция setTimeout, которая может быть более подходящей для определенных случаев использования. «
Источник: