2010-01-19 52 views
1

我有幾個輸入:如何通過jquery按索引名訪問元素?

<input type="text" name="entry[1]" value="aaa" id="firstEntry" /> 
<input type="text" name="entry[2]" value="bbb" id="secondEntry" /> 
<input type="text" name="entry[3]" value="ccc" id="thirdEntry" /> 

如何獲得 「2」 時,我知道,元素ID爲 「secondEntry」?

var name = $("#secondEntry").attr('name'); // name = "entry[2]" 

但是如何獲得索引2? 我只需要知道索引(2),而不是全名(entry [2])。

回答

5

好名字只是一個字符串,你必須用字符串操作做休息:

var name = $("#secondEntry").attr('name'); // name = "entry[2]" 
name = name.substring(name.indexOf('[')+1); // name = "2]" 

// if you want an integer 
name = parseInt(name, 10); // name = 2 

// if you want a string representation 
name = name.substring(0, name.indexOf(']')); // name = "2" 
1

如果它始終採用該格式,即entry [x],那麼您可以使用正則表達式;

 
var elename = $("#secondEntry").attr('name'); 
var i = elename.match("entry\\[([0-9])+\\]"); 
var ind = i[1]; 
+0

如果你想它作爲一個數字,'VAR IND = parseInt函數(I [1])'。但從正則表達式中刪除「條目」,因此它不易碎(不會因名稱更改而中斷)。 – 2010-01-19 11:12:59

0
var name = $("#secondEntry").attr('name'); 
var index = name.substring(6, name.length - 1); 
+0

授予他的示例數據,但*哇*它是脆弱的。如果他在某個時間點將'entry'更改爲'item',或者如果有超過九個,或者... – 2010-01-19 11:12:20

+0

當然,它只適用於「輸入」,但這正是他正在查看的內容(以及RegExp解決方案也不一般);關於你的第二個參數:''entry [12413525]'。substring(6,'entry [12413525]'。length - 1)'give me'「12413525」'。 – poke 2010-01-19 13:08:13

+0

重回第一項:是的,好吧,我評論了另一個我也讀過的東西。第二項:Doh!我只是完全誤讀了長度。 – 2010-01-19 17:16:38

1
var re = /entry\[(\d{1})\]/; 
var index = re.exec(string); 
相關問題