jQuery比较Divs的高度



我想比较div和附加侧添加的高度,而侧div从另一个div中获得相同的大小,但是我的代码获得了一个无限循环。

//the i var its just for testing with a non infinity loop
var i = 0;
while($('#lista-body').height() > $('#ads-side').height() && i < 10){
    $.post("getADSSide.php" , { cliente: '<?=$clienteCrypt?>' }, function(data){            
        if (data != '' || data != undefined || data != null){
            setTimeout(function(){ $('#ads-side').append(data);}, 1000);
        }
    });
    i++;
}

ajax在循环完成后运行。

同步执行意味着客户端等待该方法完成执行并返回其结果,然后再执行下一个JavaScript语句或评估表达式的下一个术语。

异步执行意味着在客户端调用该方法后立即执行下一个JavaScript语句或评估表达式下一个术语的表达式,无论是否完成和返回结果。

>

从"进度数据对象"指南和参考

ajax( $.post,或更具体地说,回调函数)是一种异步动作。您本质上是在尝试使用同步代码等待异步动作,该操作永远不会起作用(或者如果这样做,它将非常糟糕)。特别是当您的同步代码继续执行进一步的异步AJAX指令时。

如果要填充DIV直到其高度足够,请计算回调内的高度,如果没有足够的内容,请重新执行AJAX调用:

function fillAds() {
    $.post("getADSSide.php" , { cliente: '<?=$clienteCrypt?>' }, function(data){            
        if (data != '' || data != undefined || data != null){
            setTimeout(function(){
                $('#ads-side').append(data);
                if($('#lista-body').height() > $('#ads-side').height()) {
                    fillAds();
                }
            }, 1000);
        }
    });
}

使用另一个fillAds();调用此代码外部的某个地方。

还请注意,通过做出此简单的更改,如果异步操作失败(例如,数据是未定义的,空的,null的,或者该方法无法完全执行)尝试进一步进行AJAX呼叫。huzzah!免费错误处理!

最新更新