CSSプロパティに基づいて数値計算を行う必要があります。ただし、これを使用して情報を取得する場合:
$(this).css('marginBottom')
値「10px」を返します。 px
か%
かem
かどうかに関係なく、値の数値部分を取得するだけのトリックはありますか?
これにより、文字列からすべての非数字、非ドット、および非マイナス記号がクリーンアップされます。
$(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値は文字列であり、数値ではありません。
このメソッドはよりクリーンでシンプルで、数値を返します:
parseFloat($(this).css('marginBottom'));
parseFloat($(this).css('marginBottom'))
MarginBottomがemで定義されている場合でも、上記のparseFloat内の値は、計算されたCSSプロパティであるため、pxになります。
$(this).css('marginBottom').replace('px','')
20px/20%/ 20emに設定されたmargin-bottomプロパティがあるとします。値を数値として取得するには、2つのオプションがあります。
オプション1:
parseInt($('#some_DOM_element_ID').css('margin-bottom'), 10);
ParseInt()関数は文字列を解析し、整数を返します。何をしているのかわからない限り、上記の関数(「基数」として知られる)にある10を変更しないでください。
出力例は、%およびemに対して20(pxでmargin-bottomが設定されている場合)になり、現在の親要素/フォントに基づいて相対数を出力しますサイズ。
オプション2(個人的にこのオプションを好む)
parseFloat($('#some_DOM_element_ID').css('margin-bottom'));
出力例は、%およびemに対して20(pxでmargin-bottomが設定されている場合)になり、現在の親要素/フォントに基づいて相対数を出力しますサイズ。
ParseFloat()関数は文字列を解析し、浮動小数点数を返します。
ParseFloat()関数は、指定されたストリングの最初の文字が数字かどうかを判別します。そうである場合、数値の末尾に到達するまで文字列を解析し、数値を文字列ではなく数値として返します。
オプション2の利点は、10進数(20.32322pxなど)が返された場合、小数点以下の値で返された数値が返されることです。マージン底がemまたは%に設定されている場合など、特定の数値を返す必要がある場合に役立ちます
単純なjQueryプラグインを使用して、単一のCSSプロパティの数値を返します。
JQueryのデフォルトのparseFloat
メソッドによって返される値に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);
Id go for:
Math.abs(parseFloat($(this).css("property")));
parseint
は、小数値を切り捨てます(例:1.5em
は1
を返します)。
正規表現でreplace
関数を試してください。
$this.css('marginBottom').replace(/([\d.]+)(px|pt|em|%)/,'$1');
この非常に単純な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("[a-z][A-Z]","g");
parseFloat($(this).css("property").replace(regExp, ""));