gpt4 book ai didi

javascript - jQuery .css() 函数不返回预期值

转载 作者:可可西里 更新时间:2023-11-01 01:53:31 29 4
gpt4 key购买 nike

好吧,我搜索了 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 的情况下毫无值(value)设计。

有什么方法可以从 jQuery 的 CSS 中获取实际值吗?
这是一个 jQuery 错误,还是我遗漏了什么?

这是一个 jsfiddle:http://jsfiddle.net/yAnFL/1/ .


决议

显然,这是预期的结果。
我决定使用 this plugin为我做转换。
在 jQuery 设计中,取消对 CSS 的控制似乎是一个糟糕的选择。

最佳答案

这不是您问题的完整答案,但它可能是计算 em 值的有效解决方案。我从 here 改编了这个函数.和 here是更新后的 fiddle 。

$.fn.emWidth = function(){
var wpx = this.width();
var temp = $('<div />').css({
width:'1em',
position: 'absolute'
});
this.append(temp);
var oneEm = temp.width();
temp.remove();
var value = wpx/oneEm;
return Math.round(value*100)/100;
};

关于javascript - jQuery .css() 函数不返回预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5475589/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com