JQuery - узнать ширину элемента, как указано в CSS (например, в% age, если она указана в% age, а не только в px)

Аналогично этому вопросу: получить процентное значение правила CSS в jQuery

Однако я пишу плагин, и он должен иметь дело с ним, изящно зависящим от того, как была определена ширина. Если элемент изначально был задан в пикселях, это нормально, поскольку это значение, возвращаемое .width(), .innerWidth(), outerWidth() и .css('width').

Но я хочу знать, был ли он оригинальным, установленным в процентах. Так что, если элемент контейнера изменяет размер, я знаю, чтобы пересчитать ширину, которую я установил для своего элемента.

Возможно ли это? Единственное, что я могу придумать, - это попытаться выполнить цикл с помощью document.stylesheets, который ищет соответствующие правила, но я думаю, что более или менее невозможно сделать в целом. Любые другие идеи?

Спасибо!

Ответ 1

Я не мог найти способ сделать то, что я просил в вопросе, но я придумал обходное решение, которое позволяет мне делать то, что мне нужно, в моей ситуации. Этот код предназначен для моего плагина jQuery, называемого jScrollPane (http://jscrollpane.kelvinluck.com/). В конце концов, я устанавливаю ширину в значение null (elem.css('width', null);). Это удаляет ранее установленную мной ширину и позволяет элементу принимать естественную ширину, определенную в таблице стилей (т.е. Используя процент, если это было определено). Затем я могу измерить это новое значение и использовать это, чтобы установить ширину в желаемое число...

Ответ 2

Кажется, что .css('width') работает для меня.

Небольшой пример, чтобы показать, что это работает:

<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>

<div style="width:10%;" id="foo"></div>
<script>
alert($("#foo").css('width'));
</script>

</body>
</html>

Это дает мне результат "10%". Надеюсь, я не пропустил ничего очевидного.