2010-09-11 92 views
4

嘿,我正在學習jQuery,我很好奇。在jQuery中比較尺寸

對於在字符串返回的大小,就像說的功能:

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

有沒有一種方法對它們進行比較?例如,如果我想在做某件事之前看它是否至少有一定的尺寸?

我實際上並沒有計劃使用這個,我只是好奇。我四處搜尋,但我沒有找到任何東西。我想象一個插件將被寫入。也許首先要確保比較字符串具有相同的度量單位,然後查看哪個數字更大或類似。

作爲一個側面的問題,出於好奇:在javascript中,將保存的方法只有的數字?那麼,我將如何去從"18px"只得到18"18"?如果爲了好玩/練習,我想實現我上面所說的,是否有任何方法我應該看看,從其他方面拆分數字,還是應該使用正則表達式?

+0

你的問題沒問題,但實際上我會選擇班級,因爲line-height總是由班級設置,並且希望不要內聯。但我知道有些情況下,某些屬性是動態的,例如高度或左側或頂部。 – 2010-09-11 09:04:43

+0

@Caspar:你能詳細說明一下嗎?我是新來的jQuery/JavaScript。這個問題是出於純粹的好奇心。 – 2010-09-11 09:22:43

回答

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爲基數。 'parseInt'是錯誤的常見來源。 – eyelidlessness 2010-09-11 08:12:18

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