chrome上的Jquery width()函数给出了加载和重载时的不同值(F5)

时间:2012-01-09 04:48:27

标签: jquery google-chrome width

我不知道发生了什么,但我有这样的菜单设置

<div class="indice_item activo">
<div class="indice_item">
<div class="indice_item">
<div class="indice_item">
<div class="indice_item">
<div id="puntero" style="width: 180px; height: 19px; top: 70px; left: 0px; background-color: rgb(10, 173, 247);">&nbsp;</div>

事情是,div.puntero是一个div,当它悬停在不同的indice_item上时跟随鼠标。我用jquery做它,它的功能是动画的。 当页面加载时会创建这个div.puntero,它会查找此菜单的第一项并获取宽度和顶部和左侧坐标,因此它可以在具有类激活的项目下设置div.puntero。

这是执行该操作的代码

/*
 * Seleccionado el primero activo 
 */
$(document).ready(function() {
    $('div.indice_item').last().after('<div id="puntero">&nbsp;</div>');
    //seteamos el puntero donde debe estar
    ancho=$('div.indice_item').first().width()
    alert(ancho);
    $('#puntero').width($('div.indice_item').first().width());
    $('#puntero').height(($('div.indice_item').first().height()+3));
    $('#puntero').css({
        "top"  : $('div.indice_item').position().top,
        "left" : $('div.indice_item').position().left
    });
    $('.indice_item').each(function (){
        //$(this).
    });
});

这在firefox中完美运行,但在chrome中我有几个问题,它似乎工作正常。但后来我按下重装或F5并且div.puntero的宽度变得疯狂。 我添加了警报(ancho);对于宽度,当我进入页面时,它给我正确的宽度180,当我按下重新加载1665或1649时,图表。 它为什么这样工作?

2 个答案:

答案 0 :(得分:6)

尝试在加载所有内容后设置高度和宽度,即使用$(window).load(function() {//set height and width here});

我相信它似乎在firefox中运行正常,因为缓存。也许我错了,只需设置jsFiddle。明确问题要容易得多。

答案 1 :(得分:0)

这是解决方案,

jQuery behaving strange after page refresh (F5) in Chrome

使用此

$(window).load(function(){});

而不是:

$(document).ready(function(){});