Функция Jquery width () в Chrome дает разные значения при загрузке и перезагрузке (F5) - PullRequest
3 голосов
/ 09 января 2012

Я не понимаю, что происходит, но у меня есть меню, установленное вот так

<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 и его функций animate. Когда страница загружается, она создает этот div.puntero, она ищет первый элемент этого меню и получает ширину, верхнюю и левую координаты, поэтому она может установить div.puntero под элементом, который имеет класс activo.

Это код, который делает это

/*
 * 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 у меня есть несколько проблем, кажется, что он работает правильно. Но затем я нажал reload или F5, и ширина div.puntero сходит с ума. Я добавил предупреждение (якорь); для ширины и когда я перехожу на страницу, это дает мне правильную ширину 180, а когда я нажимаю перезагрузить 1665 или 1649, из диаграмм. Почему так работает?

Ответы [ 2 ]

6 голосов
/ 09 января 2012

Попробуйте установить высоту и ширину после загрузки всего, т.е. используйте $(window).load(function() {//set height and width here});.

Я считаю, что в Firefox он работает нормально из-за кеширования. Может я не прав, просто настрой jsFiddle. Будет намного легче определить проблему.

0 голосов
/ 10 января 2012

Вот решение,

jQuery ведет себя странно после обновления страницы (F5) в Chrome

Используйте это

$ (окно).load (function () {});

Вместо вместо:

$ (документ) .ready (function () {});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...