在Firefox中破解的Jquery替换方法

时间:2012-10-23 21:11:05

标签: jquery html css firefox

我正在使用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的一个错误吗?这里的解决方法是什么?

2 个答案:

答案 0 :(得分:4)

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

所述
  

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

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

答案 1 :(得分:2)

你需要在整数之前解析整数

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

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

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

将此与AntonNiklasson的答案相结合,您就拥有了自己的工作代码(假设填充顶部为您提供了所需的代码)

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

更新

感谢Kato,他指出,如果您将属性设置为除像素以外的其他任何内容,那么这项功能将无法运行。他创建了一个很好的jQuery帮助器,可以在单位https://github.com/Zenovations/spritemation/blob/master/src/jquery.unitconverter.js

之间进行转换