Получить верхнее значение css как число, а не строку?

В 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.
Как этого добиться?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
125
0
111 814
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

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

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

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

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

Вы также должны указать систему счисления: parseInt ($ ('# elem'). Css ('top'), 10); Заставляет его анализировать как базу 10, в противном случае строки, начинающиеся с '0', будут анализироваться в базе 8.

Ben 27.12.2008 20:39

Хотя это может быть число с плавающей запятой, поэтому лучше использовать parseFloat.

Vsevolod Golovanov 07.06.2013 12:04

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

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

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

$("#logo").cssNumber("top")

Чуть более практичный / эффективный плагин, основанный на ответе Ивана Кастелланоса (который был основан на ответе 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/

Казалось бы, нужно либо всегда использовать cssFloat, либо учитывать, что cssInt разделит значение вроде 25.9999999px до 25.

justingordon 30.12.2013 00:38

@justingordon: это правильное поведение целочисленного усечения для int, поэтому на самом деле все сводится к необходимому использованию значения.

Gone Coding 30.12.2013 02:05

Другие вопросы по теме