Tim*_*ner 154 javascript css jquery parsing
我需要根据CSS属性进行数值计算.但是,当我用它来获取信息时:
$(this).css('marginBottom')
Run Code Online (Sandbox Code Playgroud)
它返回值'10px'.有没有窍门刚开值的数字部分无论是px或%或em或什么?
Bob*_*Bob 279
parseInt($(this).css('marginBottom'), 10);
Run Code Online (Sandbox Code Playgroud)
parseInt 将自动忽略单位.
例如:
var marginBottom = "10px";
marginBottom = parseInt(marginBottom, 10);
alert(marginBottom); // alerts: 10
Run Code Online (Sandbox Code Playgroud)
zak*_*rya 158
这将清除字符串中的所有非数字,非点和非减号:
$(this).css('marginBottom').replace(/[^-\d\.]/g, '');
Run Code Online (Sandbox Code Playgroud)
更新为负值
小智 117
使用replace方法,您的css值是一个字符串,而不是数字.
这个方法更干净,简单,并返回一个数字:
parseFloat($(this).css('marginBottom'));
Run Code Online (Sandbox Code Playgroud)
Ale*_*lov 13
parseFloat($(this).css('marginBottom'))
Run Code Online (Sandbox Code Playgroud)
即使margin中定义了marginBottom,上面parseFloat中的值也将以px为单位,因为它是一个计算出来的CSS属性.
$(this).css('marginBottom').replace('px','')
Run Code Online (Sandbox Code Playgroud)
我使用一个简单的jQuery插件来返回任何单个CSS属性的数值.
它适用parseFloat于jQuery默认css方法返回的值.
插件定义:
$.fn.cssNum = function(){
return parseFloat($.fn.css.apply(this,arguments));
}
Run Code Online (Sandbox Code Playgroud)
用法:
var element = $('.selector-class');
var numericWidth = element.cssNum('width') * 10 + 'px';
element.css('width', numericWidth);
Run Code Online (Sandbox Code Playgroud)
我们假设您将margin-bottom属性设置为20px/20%/ 20em.要将值作为数字获取,有两个选项:
选项1:
parseInt($('#some_DOM_element_ID').css('margin-bottom'), 10);
Run Code Online (Sandbox Code Playgroud)
parseInt()函数解析字符串并返回一个整数.除非你知道自己在做什么,否则不要更改上述功能中的10(称为"基数").
示例输出将为:20(如果在px中设置margin-bottom)对于%和em,它将根据当前父元素/字体大小输出相对数.
选项2 (我个人更喜欢这个选项)
parseFloat($('#some_DOM_element_ID').css('margin-bottom'));
Run Code Online (Sandbox Code Playgroud)
示例输出将为:20(如果在px中设置margin-bottom)对于%和em,它将根据当前父元素/字体大小输出相对数.
parseFloat()函数解析字符串并返回浮点数.
parseFloat()函数确定指定字符串中的第一个字符是否为数字.如果是,则解析字符串直到它到达数字的末尾,并将数字作为数字返回,而不是字符串.
选项2的优点是,如果您返回十进制数字(例如20.32322px),您将获得返回的数字,小数点后面的值.如果您需要返回特定数字,则非常有用,例如,如果您的保证金底部设置为em或%
| 归档时间: |
|
| 查看次数: |
122714 次 |
| 最近记录: |