jQuery 切换页面后动画不同步
jQuery animation out of sync after switching pages
我正在尝试创建一个文本会发生变化的页面,并且在每个文本之间使用淡入和淡出,这非常有效,但是当我更改 window 时,此动画会延迟,但是我用来更改文本的 .html 不会延迟,并最终使所有内容不同步。
有谁知道这个的任何解决方案?
这是我的JS代码
$(document).ready(() => {
let ms = 8000
let textQueue = ['1', '2', '3']
for (let index = 0; index < textQueue.length; index++) {
((index) => {
setTimeout(() => {
if (index == textQueue.length - 1) {
$(".text").click(() => {
window.open('link')
})
}
$(".text")
.html(textQueue[index])
.fadeIn(1500)
.delay(5000)
.fadeOut(1500)
}, ms * index)
})(index)
}
})
我设法解决了这个问题并改进了代码,我会把它留在这里以防万一有人需要它。
基本上我将它设置为仅在 fadeOut 动画结束时更改文本.
JS代码:
$(document).ready(() => {
let ms = 8000
let textQueue = [
'0',
'1',
'2'
]
let index = 0
$(document).click(() => {
if (index + 1 === textQueue.length) {
window.open('link')
return
}
index++
$(".text").html(textQueue[index])
})
animation()
function animation() {
if (index < textQueue.length) {
$(".text").fadeOut(1500, () => {
$(".text").html(textQueue[index])
})
}
$(".text")
.fadeIn(1500)
.delay(5000)
setTimeout(() => {
if (index < textQueue.length - 1) {
index++
animation()
}
}, 8000)
}
})
我正在尝试创建一个文本会发生变化的页面,并且在每个文本之间使用淡入和淡出,这非常有效,但是当我更改 window 时,此动画会延迟,但是我用来更改文本的 .html 不会延迟,并最终使所有内容不同步。
有谁知道这个的任何解决方案?
这是我的JS代码
$(document).ready(() => {
let ms = 8000
let textQueue = ['1', '2', '3']
for (let index = 0; index < textQueue.length; index++) {
((index) => {
setTimeout(() => {
if (index == textQueue.length - 1) {
$(".text").click(() => {
window.open('link')
})
}
$(".text")
.html(textQueue[index])
.fadeIn(1500)
.delay(5000)
.fadeOut(1500)
}, ms * index)
})(index)
}
})
我设法解决了这个问题并改进了代码,我会把它留在这里以防万一有人需要它。
基本上我将它设置为仅在 fadeOut 动画结束时更改文本.
JS代码:
$(document).ready(() => {
let ms = 8000
let textQueue = [
'0',
'1',
'2'
]
let index = 0
$(document).click(() => {
if (index + 1 === textQueue.length) {
window.open('link')
return
}
index++
$(".text").html(textQueue[index])
})
animation()
function animation() {
if (index < textQueue.length) {
$(".text").fadeOut(1500, () => {
$(".text").html(textQueue[index])
})
}
$(".text")
.fadeIn(1500)
.delay(5000)
setTimeout(() => {
if (index < textQueue.length - 1) {
index++
animation()
}
}, 8000)
}
})