Хорошо, я искал документы jQuery (кому-то, кому нужно было поддерживать), я искал SO, и я искал Google. Я не могу найти ответ на этот вопрос.
В словах
В прошлом я помню, как jQuery работал следующим образом:
$('#myObj').width()
возвращает вычисленную ширину #myObj
. $('#myObj').css('width')
возвращает ширину, поскольку она вводится в таблицу стилей CSS.
Теперь любой пакет jQuery, который я использую, возвращает то же самое число независимо от того, какой метод я использую.
$('#myObj').width()
возвращает вычисленную ширину #myObj
как целое число (float?). $('#myObj').css('width')
возвращает вычисленную ширину #myObj
как строку с px
в конце.
В псевдокоде
#myobject{
width: 14em;
height: 14em;
}
<div id="myobject">Has Text</div>
<script type="text/javascript">
$( '#myobject' ).click(function(){
alert($(this).css('width') + "\n" + $(this).width());
});
</script>
//Always alerts "224px [newline] 224"
//Expected to alert "14em [newline] 224"
Эти значения возврата на основе пикселя почти полностью бесполезны, так как мне нужно делать вычисления, основанные на том, что на самом деле в CSS. Например, я хочу сделать математику в позиции left
элемента, но я не могу, потому что он сохраняет возвращаемые значения пикселей, которые бесполезны в проекте em
.
Есть ли способ получить фактические значения из CSS в jQuery?
Является ли это ошибкой jQuery, или я что-то упускаю?
Здесь jsfiddle: http://jsfiddle.net/yAnFL/1/.
Решение
По-видимому, это намеченный результат.
Я решил использовать этот плагин, чтобы делать конверсии для меня.
Убрать контроль над CSS представляется плохой выбор в дизайне jQuery.