jQuery(1.7.2 - 最新)- 设置 CSS 值时的怪异行为(小数/ float 错误)

标签 jquery css floating-point rounding

我一直在测试一个简单的循环,它在屏幕上移动一些东西 - 但是当通过 jQuery 设置 CSS 属性时,我看到了奇怪的行为(几乎肯定与 float 错误有关)。

基本上我会反复做这样的事情

var val = parseInt($(myobject).css("left));
val -= 7;
$(myobject).css("left",val+"px");

如果我在那之后测试“left”属性的值,我会看到如下结果

1042
1035
1028
1020 <<<< !!!!
1013
1006
...

进一步挖掘,似乎正在发生的是我这样做

$(myobject).css("left","1021px")
alert($(myobject).css("left"))

警报显示的是“1020.99876152371253716253px”

我能想到的是 jQuery 在内部剥离“1021px”并分配数字的非四舍五入/固定/上限/下限版本!?

不确定在哪里提出这个问题或者我是否遗漏了什么!?!?

附注更新说我在最新的公开 Chrome/W7-64 上看到了这个

p.p.s.我将我的整个代码(没有 webfont 和 1 个外部函数)复制到 JSFiddle 中并且它没有异常行为(即使在全屏模式下) - 但代码在独立运行时继续异常行为(尽管在各个方面都是相同的代码!!)所以我我对此感到更加迷惑...

还有更多这只发生在 Chrome 中,在 IE (9) 和 Firefox (14) 中它工作正常 - 很明显我遇到了一个怪癖,而且是一个非常具体的怪癖(因为它在 jsFiddle 中不可重现!!)

最佳答案

jQuery 正在分配您指定的值(“1021px”)。产生浮点值的是浏览器。不久前,我在一个版本的 IE 中遇到了类似的问题。

你可以这样处理:

var val = Math.round( parseFloat( $( myobject ).css( 'left' ) ) );

关于jQuery(1.7.2 - 最新)- 设置 CSS 值时的怪异行为(小数/ float 错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11731747/

相关文章:

html - 具有相同维度的绝对 sibling

javascript - POST 请求如何与 jQuery 中的相对路径一起工作?

javascript - Change 事件在 IE 中点击前触发

javascript - 使用 Zurb Foundation 在顶部栏中使用 Postfix 按钮输入

perl - 是否可以使用 perl 的 vec() 函数存储 float ?

c - 移位后 float 的位布局如何给我某些值?

c++ - C - 打印浮点值

javascript - 单击导航栏品牌时关闭 Bootstrap 折叠菜单

javascript - 扩展存储在变量中的函数

javascript - 使用 Vanilla Javascript 和数据属性在悬停时切换背景图像