我遇到了div
的问题,该问题淡入HTML / jQuery演示文稿的幻灯片12中的页面。
运行以下代码时,div
将淡入,但不会跟随称为循环的函数并重复自身。它应该渐渐变为50%的不透明度,并在连续循环中恢复到100%。
我很自信这个问题与我的语法有关,但我还没有运气。
jQuery的:
// if slide 12
if (index == 11) {
$("#prev").show();
$("#next").show();
$("#p12-1").delay(2000).fadeIn("slow", function() {
function loop() {
$("#p12-1").delay(200).fadeTo("slow", 0.5, function () {
$("#p12-1").delay(200).fadeTo("slow", 1, loop);
});
};
});
createParticles($("#main").offset().left + 200, $("#main").offset().top + 100, 4000);
}
HTML:
<div class="main-slide main-slide-12" style="display:none;">
<div id="p12-1" style="display:none;"><img src="images/p12-1.png" /></div>
<div style="display:none;" id="p12-2"><img src="images/p12-2.png" /></div>
<div style="display:none;" id="p12-3"><img src="images/p12-3.png" /></div>
答案 0 :(得分:3)
变化:
$("#p12-1").delay(2000).fadeIn("slow", function() {
function loop() {
$("#p12-1").delay(200).fadeTo("slow", 0.5, function () {
$("#p12-1").delay(200).fadeTo("slow", 1, loop);
});
};
});
为:
$("#p12-1").delay(2000).fadeIn("slow", function() {
(function loop() {
$("#p12-1").delay(200).fadeTo("slow", 0.5, function () {
$("#p12-1").delay(200).fadeTo("slow", 1, loop);
});
}());
});
小更新:
通常,不需要使用oncomplete-callback在相同元素上对动画进行排队。这样说,您也可以使用这样的代码,效果相同(请注意,您可以根据需要链接尽可能多的动画和延迟,并且只使用fade
作为最后一个完整的回调来重新开始):
(function fade () {
$('#p12-1')
.delay(2000)
.fadeIn('slow')
.delay(2000)
.fadeOut('slow', fade);
}());
答案 1 :(得分:0)
替换
$("#p12-1").delay(2000).fadeIn("slow", function() {
function loop() {
$("#p12-1").delay(200).fadeTo("slow", 0.5, function () {
$("#p12-1").delay(200).fadeTo("slow", 1, loop);
});
};
});
与
$("#p12-1").delay(2000).fadeIn("slow", function() {
function loop() {
$("#p12-1").delay(200).fadeTo("slow", 0.5, function () {
$("#p12-1").delay(200).fadeTo("slow", 1, loop);
});
}
loop();
});
我没有像@Yoshi那样使用函数表达式,因为AFAIK有些浏览器不喜欢命名函数表达式。