2012-10-02 57 views
3

我使用jQuery來獲取CSS變換屬性檢索的第一個值:從括號的數字對

this.$slider.css('transform') 

以下回報:

translate(100px, 0px) 

我怎麼會得到公正的數100作爲使用JavaScript或jQuery的變量?

回答

4

用JavaScript字符串函數:

str = this.$slider.css('transform'); 
a = str.substring(str.indexOf('(')+1,str.indexOf('px')); 
alert(a); //100 
3

你可以使用正則表達式:

'translate(100px, 0px)'.match(/[^\(]+\(([0-9]+)/)[1]

+0

+1得愛的正則表達式 –

+0

VAR currentTrans = $這個slider.css( '變換') ; (currentTrans.match(/ [^ \()+ \(([0-9] +)/)[1]); 返回錯誤「type error ... is null」 –

+0

可能是因爲沒有css轉換,你應該檢查是否匹配返回數組'm = currentTrans.match(/ [^(] +(([0-9] +)/); if(m){m [0 ];} else {/ * no transform * /}' – jcubic

1
var transform = this.$slider.css('transform'), 
    first = transform.split('(')[1].split('px')[0]; 
0
s = "translate(100px,0px)" 
parseInt(s.substring(s.indexOf("(")+1), 10) // returns 100 
1

小的正則表達式就足以只是拉的第一個數字,但要注意這並不挑剔,他們是像素單位或其他任何可能會回來在CSS

this.$slider.css('transform').match(/\d+/) 
+0

這很好,除非不包括數字是否定的 –

0

從索引10開始,並通過parseInt發送。

var str = this.$slider.css('transform'); 

var n = parseInt(str.slice(10), 10); 

或者是否會有其他類型的結果比的變換,你可以這樣做:

​​
相關問題