1

我正在使用 Jquery 计算我的 css 文件的填充偏移量。我需要它是一个整数值,所以我用 .replace() 方法删除了“px”部分。

//calculate left and right padding on element
var padding_offset = $('#projects_menu').css("padding").replace('px', '')* 2;

当我发出警报时(padding_offset);在 Firefox 中,它返回 0。在 chrome、IE、Opera 中,它返回当前偏移量减去“px”部分,因此在本例中为“20”。

这只是firefox的一个错误吗?这里的解决方法是什么?

4

2 回答 2

4

不支持速记 CSS 属性。如http://api.jquery.com/css/所述

不支持速记 CSS 属性(例如边距、背景、边框)。例如,如果要检索渲染的边距,请使用:$(elem).css('marginTop') 和 $(elem).css('marginRight'),等等。

由于每个“子属性”的边距、填充、边框等可以具有不同的值以及不同的单位,这确实是合乎逻辑的。

于 2012-10-23T21:15:55.413 回答
2

您需要先解析整数,然后才能将其相乘

var padding_offset = parseInt($('#projects_menu').css("padding").replace('px', ''), 10)* 2;

但是parseInt已经在字符串的末尾忽略px了,所以你不需要它

parseInt( $('#projects_menu').css("padding"), 10) * 2;

将此与 AntonNiklasson 的答案结合起来,您就有了工作代码(假设 padding-top 为您提供所需的)

parseInt( $('#projects_menu').css("paddingTop"), 10) * 2;

更新

感谢 Kato,他指出如果您将属性设置为像素以外的任何内容,这将不起作用。他创建了一个很好的jQuery助手来在单位之间转换https://github.com/Zenovations/spritemation/blob/master/src/jquery.unitconverter.js

于 2012-10-23T21:13:30.477 回答