Получить верхнее значение css как число, а не как строку? - PullRequest
111 голосов
/ 27 декабря 2008

В jQuery вы можете получить верхнюю позицию относительно родителя как число, но вы не можете получить верхнее значение css как число, если оно было установлено в px.
Скажем, у меня есть следующее:

#elem{
  position:relative;
  top:10px;
 }
<div>
  Bla text bla this takes op vertical space....
  <div id='elem'>bla</div>
</div>
$('#elem').position().top; //Returns the number (10+(the vertical space took by the text))
$('#elem').css('top'); //Returns the string '10px'

Но я хочу иметь свойство css top в виде числа 10.
Как достичь этого?

Ответы [ 3 ]

197 голосов
/ 27 декабря 2008

Вы можете использовать функцию parseInt () для преобразования строки в число, например:

parseInt($('#elem').css('top'));

Обновление: (согласно предложению Бена): Вы должны также указать основание:

parseInt($('#elem').css('top'), 10);

Принудительно обрабатывает его как десятичное число, иначе строки, начинающиеся с '0', могут быть проанализированы как восьмеричное число (может зависеть от используемого браузера).

25 голосов
/ 27 марта 2012

Плагин jQuery, основанный на ответе M4N

jQuery.fn.cssNumber = function(prop){
    var v = parseInt(this.css(prop),10);
    return isNaN(v) ? 0 : v;
};

Итак, вы просто используете этот метод для получения числовых значений

$("#logo").cssNumber("top")
13 голосов
/ 01 сентября 2013

Несколько более практичный / эффективный плагин, основанный на ответе Ивана Кастелланоса (который был основан на ответе M4N). Использование || 0 преобразует Nan в 0 без шага тестирования.

Я также предоставил варианты float и int для предполагаемого использования:

jQuery.fn.cssInt = function (prop) {
    return parseInt(this.css(prop), 10) || 0;
};

jQuery.fn.cssFloat = function (prop) {
    return parseFloat(this.css(prop)) || 0;
};

Использование:

$('#elem').cssInt('top');    // e.g. returns 123 as an int
$('#elem').cssFloat('top');  // e.g. Returns 123.45 as a float

Проверка скрипта на http://jsfiddle.net/TrueBlueAussie/E5LTu/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...