Функция Outerwidth() возвращает 0 при использовании для братьев и сестер

У меня 4 разных div с миниатюрами изображений. Для миниатюрного клика я создал скрипт jQuery для увеличения изображения. Увеличить изображение работает для первой страницы #C1, но остальные страницы, outerWidth возвращает 0. Следовательно, увеличенное изображение не отображается должным образом. Столбец коллекции класса установлен в display: none в CSS. По нажатию раскрывающегося меню я использую fadeOut() скрыть всех своих братьев и сестер и отобразить текущий #(атрибут href). Я не могу использовать visibility:hidden как это полностью скрывает страницу.

Как я могу использовать outerWidth() функция для всех остальных страниц.

<div class="collection-column" id = "#c1">....</div>
<div class="collection-column" id = "#c2">....</div>
<div class="collection-column" id = "#c3">....</div>
<div class="collection-column" id = "#c4">....</div>

Кто-нибудь сталкивался с подобной проблемой? Пожалуйста помоги!!

1 ответ

В этой проблеме есть обходной путь, который устанавливает абсолютное положение и перемещает элемент в невидимую область. Затем получите его размеры и восстановите исходное положение.

var getStyle = function (el, prop) {
    if (typeof getComputedStyle !== 'undefined') {
        return getComputedStyle(el, null).getPropertyValue(prop);
    } else {
        return el.currentStyle[prop];
    }
}

var getOuterWidth = function(element){
   var originalDisplay = getStyle(element.get(0), "display");
   if(originalDisplay == "hidden"){
       var originalPos = getStyle(element.get(0), "position");
       var originalLeft = getStyle(element.get(0), "left");
       var originalTop = getStyle(element.get(0), "top");
       element.css({ top : -10000, left: -10000, position: "absolute", display: "block"  });
    }

    var outerWidth = element.outerWidth();

    if(originalDisplay == "hidden"){
        element.css({ top : originalTop, left: originalLeft, position: originalPosition, display: originalDisplay });
    }

    return outerWidth;
}

Использование:

getOuterWidth($("#c4"));
Другие вопросы по тегам