0

我有以下代码:

function fadeIn()
    {
    $(".home_photo").fadeTo(1000, 1.0 ).delay(5 * 1000);
    fadeOut();
    }

function doSwap()
    {
    console.log('Swap');
    ... There is some Ajax Code here that swaps the image in the divs ...
    fadeIn();
    }

function fadeOut()
    {
    $(".home_photo").fadeTo(1000, 0.01, doSwap );
    }

$(document).ready(function(){
    fadeOut();
});

这是随之而来的 HTML:

<body>
<div id="photowrapper">
    <div class="home_photo" id="img1"></div>
    <div class="home_photo" id="img2"></div>
    <div class="home_photo" id="img3"></div>
    <div class="home_photo" id="img4"></div>
</div>
</body>

jQuery 脚本为“home_photo”类的每个成员运行一次。问题是 doSwap 函数在每个交换周期(fadeOut、doSwap、fadeIn)中运行 4 次。我需要做什么才能使脚本每次交换只运行一次,而不是为每个班级成员运行一次?

4

1 回答 1

1

如果要在完成doSwap()后运行,fadeTo()可以使用 jQuery 延迟对象来控制进程:

$.when(function() {

    var deferred = $.Deferred();

    $(".home_photo").fadeTo(1000, 0.01, function(){
        deferred.resolve();
    });

    return deferred;

}).then(function(){

    doSwap();

});
于 2014-03-22T06:29:36.563 回答