gpt4 book ai didi

javascript - jQuery 递归淡入函数

转载 作者:行者123 更新时间:2023-11-29 17:23:28 25 4
gpt4 key购买 nike

我正在尝试为 Logo 制作动画。标记如下所示:

<div id="logo">
<h1>
<span>A</span><span>n</span><span>t</span><span>o</span><span>n</span><span>i</span><span>o</span><span>R</span><span>o</span><span>s</span><span>s</span><span>i</span>
</h1>
<h2>composer</h2>
</div>

我想做的是为每个 <span> 制作淡入效果里面#logo .为此,我使用了这段代码:

function fadeInRecursive (elementToFade) {

if (!elementToFade) {
elementToFade = $('#logo span:first-child')
}

var next = elementToFade.next('#logo span')

if (!next) {return false}

elementToFade.animate({
opacity: 1
}, 3000, fadeInRecursive(next))
}

$(document).ready( fadeInRecursive )

但是 Firefox 崩溃了...

我做错了什么?

最佳答案

这是一个通用函数,它会逐个淡入选择器中的每个项目:

function fadeInSuccessive(selector, t) {
var items = $(selector);
var index = 0;

function next() {
if (index < items.length) {
items.eq(index++).fadeIn(t, next);
}
}
next();
}

fadeInSuccessive("#logo span", 1000);

还有一个工作演示:http://jsfiddle.net/jfriend00/vzgBd/

这实际上并没有使用递归(尽管它看起来像),因为对 next() 的连续调用发生在一段时间后由动画完成触发,当它被调用时,之前对 next() 的调用已经完成,因此从技术上讲这不是递归。


这是一个更通用的实现,作为 jQuery 方法完成:

$.fn.fadeInSuccessive = function(t, fn) {
var index = 0;
var self = this;

function next() {
if (index < self.length) {
self.eq(index++).fadeIn(t, next);
} else {
if (fn) {
fn.call(self);
}
}
}
next();
}

$("#logo span").fadeInSuccessive(1000, function() {
$(document.body).append("<br>Done!");
});

一个工作演示:http://jsfiddle.net/jfriend00/zTURy/

关于javascript - jQuery 递归淡入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11019741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com