獲取數你在另外一個問題提到了這一點:jquery get number from idjQuery的:從ID
你應該在你的屬性名稱(即,按鈕1,button_1)用分隔符的習慣得到。其中一個優點是,它可以更容易地從字段中提取數字或其他信息(即通過將字符串拆分爲' - ')。
如果您在屬性名稱中使用分隔符,您將如何提取數字?
謝謝!
獲取數你在另外一個問題提到了這一點:jquery get number from idjQuery的:從ID
你應該在你的屬性名稱(即,按鈕1,button_1)用分隔符的習慣得到。其中一個優點是,它可以更容易地從字段中提取數字或其他信息(即通過將字符串拆分爲' - ')。
如果您在屬性名稱中使用分隔符,您將如何提取數字?
謝謝!
.attr('id')
可用於檢索ID屬性。.split
函數通過分隔符分割字符串。[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'));
你能解釋一下嗎?(?= \ D * $)?爲什麼不只是'/ \ d + $ /'? – 2012-02-17 15:00:29
@ŠimeVidas'\ D *'匹配任何可能的非數字字符。 '(?= \ D * $)'是一種預見:它只有在找到包含的匹配項時才匹配。 '/ \ d +(?= \ D * $)/'比'/ \ d + $ /'更具寬容性:例如,我建議的RegExp也會返回一個數字作爲''button_112_id「'。 – 2012-02-17 15:02:54
更換selector
和delimiter
與您的實際值。
var parts = $('#selector').attr('id').split('delimiter');
var my_number = parts[parts.length - 1];
alert(my_number);
正如其他人已經建議可以拆分的連字符或非常簡單地強調,使用:
var number = str.split("-")[1]
另一種可行的選擇,這裏只提取使用正則表達式模式的數字。如果您從中提取數字的字符串沒有分隔符,這會很有幫助。我沒有在我的編碼的特定風格使用定界符,所以這是我使用:
var number = str.match(/\d+/);
[第二個答案](http://stackoverflow.com/a/2427872/678801)在這個問題中,你指的是完全答案,對吧? – 2012-02-17 14:57:03