Вчера я обнаружил что-то странное, когда работал с куском JS-кода. У меня был div, который был скрыт (display:none), и я использовал его высоту в некоторых вычислениях в JS. Все это работало нормально, пока я не добавил свой "скрытый" класс (который имеет display:none !important).
Вдруг высота всегда была 0. На дисплее не было никаких изменений, кроме !important.
После некоторого рытья я сузил проблему до того, что я нахожу довольно странным:
#b { display:none; } /* reported height is 36 */
#c { display:none !important; } /* reported height is 0 */
Я создал очень простой JSFiddle, чтобы изолировать это. Он также использует vanilla JS для получения высоты, которая, кажется, работает просто отлично/как ожидалось.
Кажется, что jQuery неправильно сообщает высоту о невидимых DIV и что !important ведет себя правильно.
Является ли это ошибкой в jQuery?