2012-02-17 19 views
0

獲取數你在另外一個問題提到了這一點:jquery get number from idjQuery的:從ID

你應該在你的屬性名稱(即,按鈕1,button_1)用分隔符的習慣得到。其中一個優點是,它可以更容易地從字段中提取數字或其他信息(即通過將字符串拆分爲' - ')。

如果您在屬性名稱中使用分隔符,您將如何提取數字?

謝謝!

+0

[第二個答案](http://stackoverflow.com/a/2427872/678801)在這個問題中,你指的是完全答案,對吧? – 2012-02-17 14:57:03

回答

4
  1. .attr('id')可用於檢索ID屬性。
  2. 然後,使用.split函數通過分隔符分割字符串。
  3. 從索引[1]獲取編號。

代碼:

var delimiter = '-'; 
var num = $("element").attr('id').split(delimiter)[1]; 
// Expected format: <anything 1>-<anything 2> 
// Note that <anything 2> is not necessarily a number 

以前的方法是非常依賴於ID格式。更堅實的方法是一個正則表達式:

var num = /\d+/.exec($("element").attr('id')); // Selects all consecutive digits 
// Examples: 
// button_1 = 1 button2 = 2  1st = 1  button4--5 = 4 

要在末尾匹配的數字,使用方法:

var num = /\d+(?=\D*$)/.exec($("element").attr('id')); 
+0

你能解釋一下嗎?(?= \ D * $)?爲什麼不只是'/ \ d + $ /'? – 2012-02-17 15:00:29

+0

@ŠimeVidas'\ D *'匹配任何可能的非數字字符。 '(?= \ D * $)'是一種預見:它只有在找到包含的匹配項時才匹配。 '/ \ d +(?= \ D * $)/'比'/ \ d + $ /'更具寬容性:例如,我建議的RegExp也會返回一個數字作爲''button_112_id「'。 – 2012-02-17 15:02:54

1

更換selectordelimiter與您的實際值。

var parts = $('#selector').attr('id').split('delimiter'); 
var my_number = parts[parts.length - 1]; 
alert(my_number); 
1

正如其他人已經建議可以拆分的連字符或非常簡單地強調,使用:

var number = str.split("-")[1] 

jQuery split() documentation

另一種可行的選擇,這裏只提取使用正則表達式模式的數字。如果您從中提取數字的字符串沒有分隔符,這會很有幫助。我沒有在我的編碼的特定風格使用定界符,所以這是我使用:

var number = str.match(/\d+/); 

jQuery match() documentation