Javascript 如何阻止jquery为每个类成员运行一次脚本

Javascript 如何阻止jquery为每个类成员运行一次脚本,javascript,jquery,class,fadeto,Javascript,Jquery,Class,Fadeto,我有以下代码: 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 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\u photo”的每个成员运行一次。问题在于,doSwap函数在每个交换周期(淡出、doSwap、fadeIn)运行4次。我需要做什么才能使脚本每次交换只运行一次,而不是对每个类成员运行一次?

如果希望在
fadeTo()
完成后运行
doSwap()
,可以使用jQuery deferred对象来控制该过程:

$.when(function() {

    var deferred = $.Deferred();

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

    return deferred;

}).then(function(){

    doSwap();

});

函数fadeOut(){$(“.home\u photo”).fadeTo(1000,0.01);doswap()}
您不必自己延迟或解决它,因为jQuery将为您制作一个涵盖动画的函数:
$(.home\u photo”).fadeTo(1000,0.01)。promise()。然后(doswap)
@jfriend00,啊!甚至更好。