首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery循环函数似乎不起作用

jQuery循环函数似乎不起作用
EN

Stack Overflow用户
提问于 2011-11-25 22:35:18
回答 2查看 153关注 0票数 1

我遇到了一个问题,div在HTML/jQuery演示文稿的幻灯片12中淡入页面。

当运行下面的代码时,循环将淡入,但不会跟随名为div的函数并重复自身。它应该淡出到50%的不透明度,并在一个连续的循环中恢复到100%。

我相当确信问题出在我的语法上,但我还没走运。

jQuery:

代码语言:javascript
复制
// 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:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-25 22:39:23

更改:

代码语言:javascript
复制
$("#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);
        });
    };
});

至:

代码语言:javascript
复制
$("#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作为最后一个完成时的回调来重新开始):

代码语言:javascript
复制
(function fade () {
  $('#p12-1')
  .delay(2000)
  .fadeIn('slow')
  .delay(2000)
  .fadeOut('slow', fade);
}());

演示:http://jsfiddle.net/TPBFt/

票数 3
EN

Stack Overflow用户

发布于 2011-11-25 22:41:43

替换

代码语言:javascript
复制
$("#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);
        });
    };
});

使用

代码语言:javascript
复制
$("#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有些浏览器不喜欢命名函数表达式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8270575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档