уровень ++ передаст уровень в DoStuff и затем увеличит уровень для использования в остальной части функции. Это могло быть довольно противной ошибкой, поскольку рекурсия никогда не будет заканчиваться (от того, что показывают , DoStuff всегда передается то же значение). Возможно ++ уровень предназначен вместо этого, поскольку это - противоположность уровень ++ (уровень инкрементов, и передает увеличенное значение в DoStuff)?
level+1 передаст level+1 в [1 112] DoStuff и отпуск уровень , неизменный для остальной части функции.
Это очистит все нецифровые, не-точки и не-минус знак из строки:
$(this).css('marginBottom').replace(/[^-\d\.]/g, '');
ОБНОВЛЕНО для отрицательных значений
Следует удалять единицы измерения с сохранением десятичных знаков.
var regExp = new RegExp("[a-z][A-Z]","g");
parseFloat($(this).css("property").replace(regExp, ""));
parseInt($(this).css('marginBottom'), 10);
parseInt
will automatically ignore the units.
For example:
var marginBottom = "10px";
marginBottom = parseInt(marginBottom, 10);
alert(marginBottom); // alerts: 10
parseFloat($(this).css('marginBottom'))
Even if marginBottom defined in em, the value inside of parseFloat above will be in px, as it's a calculated CSS property.
parseint
будет обрезать любые десятичные значения (например, 1.5em
дает 1
).
Попробуйте заменить
] функция с регулярным выражением
например,
$this.css('marginBottom').replace(/([\d.]+)(px|pt|em|%)/,'$1');
Я использую простой плагин 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);