jquery有时不会对div宽度进行重新调整

时间:2016-01-20 18:47:01

标签: javascript jquery

想法是获取元素的宽度,并根据大小做一些事情。

function featureSliderLoad(){
    var feature = setInterval(function(){ 
        var adWidth = jQuery('#leaderboard div iframe').width();

        if(adWidth != 0 && adWidth != null){
            if(adWidth > 728){
                Do something
            } else {
                Do something else
            }
        }

        if(jQuery('#leaderboard div iframe').width() > 100){
            clearInterval(feature);
        }
    }, 2000);
});

这大部分时间都有效,但偶尔也不会。如果使用onload就像:

jQuery(window).load(function featureSliderLoad()

它可以100%的时间工作,但我不应该因为我有:

if(adWidth != 0 && adWidth != null)

哪个应该处理未加载的元素和出现0或null的问题。

当我不使用(窗口).load时,是否有人发现代码存在问题会阻止其工作?

由于

2 个答案:

答案 0 :(得分:1)

这听起来像是在DOM完全呈现在页面中之前正在执行脚本。如果要将Div元素注入页面后期渲染,您可能还会看到一个问题。这就是您的代码段res = df.groupby('grpno.', as_index=False)['count percent'].max().rename(columns={'count percent': 'MaxOfcount percent'}) 正常工作的原因,因为它会阻止在DOM完成呈现之前调用它。

我将jQuery包装在Query(window).load(...函数中,或者使用上面的内容来阻止代码执行,直到完全呈现DOM为止。否则会被击中或错过。

答案 1 :(得分:0)

它有时会工作而不能在其他时间工作的原因是因为无法保证在调用函数之前窗口元素及其中包含的所有元素都已加载。如果您没有使用jQuery的加载事件(jquery load event)或类似的东西来延迟调用您的函数,直到加载HTML后,那么当您的函数处于HTML时,您的HTML处于未知状态叫做;因此,您的功能将产生不可预测的结果。