在jQuery中比较大小

时间:2010-09-11 08:04:20

标签: javascript jquery jquery-plugins

嘿伙计们,我现在正在学习jQuery,我很好奇。

对于返回字符串大小的函数,例如:

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

有没有办法比较它们?例如,如果我想在做某事之前看看它是否至少有一定的尺寸?

我实际上并没有计划使用它,我只是很好奇。我四处搜寻,但没有找到任何东西。我想会有一个插件。也许首先确保比较字符串具有相同的度量单位,然后查看哪个是更大的数字,或类似的东西。

作为一个附带问题,出于好奇:在javascript中,保留数字的方法是什么?那么,我如何从18获得"18""18px"?如果,为了好玩/练习,我想实现上面所说的,有什么方法我应该看看,将数字与其余方法分开,还是应该简单地使用正则表达式?

2 个答案:

答案 0 :(得分:3)

我不太确定各种形式的单位,但要将返回值作为整数。

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

不要忘记设置parseInt的基数:http://www.w3schools.com/jsref/jsref_parseInt.asp

答案 1 :(得分:1)

不要忘记,如果未明确设置行高, the height returned will be "normal" (jsFiddle) ,那么您也应该处理....(normal是默认值,它应该是某种合理的距离)

您还可以使用正则表达式对px进行切片。将字符串输入该表单后, JS will do the type conversion for you (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);
}

此处为 a Stack Overflow question about line-height normal ,此处为 a rant about line-height normal by Eric Meyer