只运行一次,而不是使用.one()

时间:2015-10-31 16:34:14

标签: jquery

我编写了一段代码:

$('img').load(function(){
    $(this).doStuff(); // here could be one, two, or more images
    doSomethingElse(); // I want this part to run only ONCE
});
function doSomethingElse(){
    // code here unfortunately runs one, two, or more times (depending on how many imgs there are)
}

我不确定如何在这种情况下应用jQuery .one()。我尝试过在线搜索只运行一次的方法,但我似乎总是找到尝试使用jQuery .one()的建议。

必须有一些方法只运行doSomethingElse一次,即使加载了多个图像。我想我可以使用setTimeout并等待所有图像加载,但我猜这需要多长时间才能使解决方案看起来有点弱。

1 个答案:

答案 0 :(得分:1)

您可以使用简单的布尔标志来完成此操作:

var done = false;

$('img').load(function(){
    $(this).doStuff(); // here could be one, two, or more images

    if (!done)
    {
        done = true;
        doSomethingElse(); // I want this part to run only ONCE
    }
});

function doSomethingElse(){
    // code here unfortunately runs one, two, or more times (depending on how many imgs there are)
}

这样,您可以在第一次运行加载函数时设置done变量,并且每次运行此函数时,它都会跳过对doSomethingElse()的调用。