Ответ 1
Это очистит все строки, неточечные и не-минусовые знаки из строки:
$(this).css('marginBottom').replace(/[^-\d\.]/g, '');
ОБНОВЛЕНО для отрицательных значений
Мне нужно сделать числовой расчет на основе свойств 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 выше будет в 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);
Id для:
Math.abs(parseFloat($(this).css("property")));
Предположим, что у вас есть свойство margin-bottom, равное 20px/20%/20em. Чтобы получить значение в виде числа, есть два варианта:
Вариант 1:
parseInt($('#some_DOM_element_ID').css('margin-bottom'), 10);
Функция parseInt() анализирует строку и возвращает целое число. Не изменяйте 10 найденных в вышеуказанной функции (называемой "radix" ), если вы не знаете, что делаете.
Результат будет равен: 20 (если значение margin-bottom установлено в px) для% и em, оно выведет относительное число, основанное на текущем размере родительского элемента/шрифта.
Вариант 2 (я лично предпочитаю эту опцию)
parseFloat($('#some_DOM_element_ID').css('margin-bottom'));
Результат будет равен: 20 (если значение margin-bottom установлено в px) для% и em, оно выведет относительное число, основанное на текущем размере родительского элемента/шрифта.
Функция parseFloat() анализирует строку и возвращает число с плавающей запятой.
Функция parseFloat() определяет, является ли первый символ в указанной строке числом. Если это так, он анализирует строку до тех пор, пока не достигнет конца номера, и вернет номер в виде числа, а не как строку.
Преимущество варианта 2 состоит в том, что если вы получите десятичные числа (например, 20.32322px), вы получите возвращаемый номер со значениями за десятичной точкой. Полезно, если вам нужны конкретные числа, возвращаемые, например, если ваш край поля установлен в em или %
parseint
будет усекать любые десятичные значения (например, 1.5em
дает 1
).
Попробуйте функцию 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);
Он устойчив к значениям NaN
, которые могут встречаться в старой версии IE (вместо этого вернет 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, ""));
использование
$(this).cssUnit('marginBottom');
которые возвращают массив. первый индекс возвращает значение нижней границы поля (пример 20 для 20px) и второй индекс возвращает нижнюю единицу маржи (пример px для 20px)