如何获得jQuery的CSS属性的数字部分?

我需要做一个基于CSS属性的数值计算。 但是,当我用这个来获取信息:

$(this).css('marginBottom') 

它返回值“10px”。 是否有一个技巧,只是获得价值的数字部分,无论是px%em或其他?

这将清除string中的所有非数字,非点和非减号:

 $(this).css('marginBottom').replace(/[^-\d\.]/g, ''); 

更新为负值

 parseInt($(this).css('marginBottom'), 10); 

parseInt会自动忽略单位。

例如:

 var marginBottom = "10px"; marginBottom = parseInt(marginBottom, 10); alert(marginBottom); // alerts: 10 

使用replace方法,您的CSS值是一个string,而不是一个数字。

这个方法更干净简单,并返回一个数字:

 parseFloat($(this).css('marginBottom')); 
 parseFloat($(this).css('marginBottom')) 

即使在em中定义了marginBottom,上面的parseFloat中的值也将在px中,因为它是一个计算的CSS属性。

 $(this).css('marginBottom').replace('px','') 

我使用一个简单的jQuery插件来返回任何单个CSS属性的数值。

它将parseFloat应用于由jQuery的默认css方法返回的值。

插件定义:

 $.fn.cssNum = function(){ return parseFloat($.fn.css.apply(this,arguments)); } 

用法:

 var element = $('.selector-class'); var numericWidth = element.cssNum('width') * 10 + 'px'; element.css('width', numericWidth); 

身份证去:

 Math.abs(parseFloat($(this).css("property"))); 

假设您将margin-bottom属性设置为20px / 20%/ 20em。 要获得数值作为数字有两个选项:

选项1:

 parseInt($('#some_DOM_element_ID').css('margin-bottom'), 10); 

parseInt()函数parsing一个string并返回一个整数。 除非你知道你在做什么,否则不要改变上述函数中的10(称为“基数”)。

示例输出将为:20(如果margin-bottom设置为px)for%,则会根据当前父元素/字体大小输出相对数。

选项2 (我个人更喜欢这个选项)

 parseFloat($('#some_DOM_element_ID').css('margin-bottom')); 

示例输出将为:20(如果margin-bottom设置为px)for%,则会根据当前父元素/字体大小输出相对数。

parseFloat()函数分析一个string并返回一个浮点数。

parseFloat()函数确定指定string中的第一个字符是否是一个数字。 如果是,则parsingstring直到达到数字的末尾,然后将该数字作为数字返回,而不是string。

选项2的优点是,如果返回十进制数字(例如20.32322px),您将得到小数点后面返回的数字。 如果您需要返回特定的数字,这很有用,例如,如果您的margin-bottom设置为em

parseint将截断任何十进制值(例如, 1.5em给出1 )。

尝试使用正则expression式replace函数例如

 $this.css('marginBottom').replace(/([\d.]+)(px|pt|em|%)/,'$1'); 

获取没有单位的元素宽度的最简单的方法是:

 target.width() 

来源: https : //api.jquery.com/width/#width2

你可以实现这个非常简单的jQuery插件:

插件定义:

 (function($) { $.fn.cssValue = function(p) { var result; return isNaN(result = parseFloat(this.css(p))) ? 0 : result; }; })(jQuery); 

它对旧IE版本中可能出现的NaN值有抵抗(反而会返回0

用法:

 $(this).cssValue('marginBottom'); 

请享用! 🙂

如果只是“px”,你也可以使用:

 $(this).css('marginBottom').slice(0, -2); 

为了改善接受的答案使用这个:

 Number($(this).css('marginBottom').replace(/[^-\d\.]/g, '')); 

在保留小数的同时应该删除单位。

 var regExp = new RegExp("[az][AZ]","g"); parseFloat($(this).css("property").replace(regExp, "")); 

使用

 $(this).cssUnit('marginBottom'); 

它返回一个数组。 第一个索引返回底部边界值(示例2020像素),第二个索引返回底部边界单位(示例像素为20像素)