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