Привет, ребята, сейчас я изучаю jQuery, и мне кое-что интересно.

Для функций, которые возвращают размеры в виде строк, например:

$(".some-class").css("line-height"); // => "18px"

Есть ли способ их сравнить? Например, если я хочу проверить, есть ли у него хотя бы определенный размер, прежде чем что-то делать?

На самом деле я не планирую использовать это, мне просто любопытно. Я поискал, но ничего не нашел. Я предполагаю, что плагин был бы написан. Возможно, сначала убедитесь, что сравнительная строка имеет те же единицы измерения, а затем посмотрите, какое число больше, или что-то в этом роде.

В качестве побочного вопроса, из любопытства: как в javascript сохранить только число? Итак, как мне получить просто 18 или "18" от "18px"? Если для развлечения / практики я хотел бы реализовать то, что я сказал выше, есть ли какие-либо методы, на которые я должен обратить внимание, чтобы отделить число от остальных, или я должен просто использовать регулярные выражения?

4
Jorge Israel Peña 11 Сен 2010 в 12:04

2 ответа

Лучший ответ

Я не слишком уверен в различных формах единиц, но чтобы получить возвращаемое значение как целое число.

if (parseInt($(".some-class").css("line-height"), 10) < 18) {
    alert("It's less than 18px!");
}

Не забудьте установить систему счисления parseInt: http://www.w3schools.com/jsref /jsref_parseInt.asp

3
Matt 11 Сен 2010 в 08:08

Не забывайте, что если высота строки не установлена явно, возвращенная высота будет "{{ X0}} "(jsFiddle) , так что вы также должны обработать это .... (normal - значение по умолчанию, и предполагается, что это какое-то разумное расстояние)

Вы также можете использовать регулярное выражение, чтобы отрезать px от конца. Как только вы введете строку в эту форму, JS выполнит преобразование типа за вас (jsFiddle) :

var height = $(".some-class").css("line-height");

if (height !== "normal") {

     // Remove 'px' from the end. The $ means the end of the line in a regex.
   height = height.replace(/px$/, ""); 

    if (height < 18) {
        alert("The height (" + height + ") is less than 18");
    } else {
        alert("The height (" + height + ") is greater or equal to 18");
    }
} else {
    alert("The height is " + height);
}

Вот вопрос о переполнении стека о высоте строки normal , а вот разглагольствования Эрика Мейера о высоте строки normal .

1
Community 23 Май 2017 в 12:30