我编写了一段代码:
$('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
并等待所有图像加载,但我猜这需要多长时间才能使解决方案看起来有点弱。
答案 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()
的调用。