2011-09-19 59 views
0

我有表單元素是這樣的:幫助在jQuery選擇

<input type='text' id='person_1_name'> 
<input type='text' id='person_2_name'> 
<input type='text' id='person_3_name'> 
<input type='text' id='person_4_name'> 
<input type='text' id='person_5_name'> 
.. 
.. 
.. 

我可以這樣選擇單個元素:

$("#person_1_name").focusout(function() { 

    alert("Hello World"); 

}); 

是否有選擇的所有元素(person_ < *> _名稱的選擇)這樣沒有分別描述它們?

感謝

+0

Woudn't它簡單的方法是將它們包裝在一個元素,然後他們存取權限像這樣:$(「wrapperelement輸入」)focosout(函數(){/ * * /}); ? – Tjirp

回答

3

這是不正確的做法。

你應該添加類到每個元素,然後選擇它:

$(".MyClass")... 

,但如果你堅持:

$('div') .filter(function() { return this.id.match(/person\_[0-9]\_name/); }) .css('border','solid 1px red') 
+0

+1。您可以在ID值上使用過濾器,但我寧願儘可能避免使用過濾器。 – Dan

+0

不錯的編輯傢伙。保持這樣! –

0

這應該工作(未經測試)

$('input[id*="person"]') 
1

向person_n_name元素中添加一個類並改爲使用類選擇器。

3

JQuery模擬的CSS選擇器。所以,這應該很好:

$('input[id^="person_"][id$="_name"]'); 
1

你可以嘗試挑選他們的類。首先將它們設置一個類,然後通過腳本

接他們是這樣的:

<input type='text' id='person_1_name' class='person'> 
<input type='text' id='person_2_name' class='person'> 
<input type='text' id='person_3_name' class='person'> 
<input type='text' id='person_4_name' class='person'> 
<input type='text' id='person_5_name' class='person'> 

<script type="text/javascript"> 

var person = $(".person"); 

人VAR將包含一個陣列

1

最好的辦法是在你input添加class='person_name'和使用

$(".person_name")focusout(function() { 

    alert("Hello World"); 

}); 

但是,如果你被迫使用id那麼你可以使用下面的代碼

$("input[id^='person_'][id$='_name']").focusout(function() { 

    alert("Hello World"); 

}); 

在這裏看到一個工作演示http://jsfiddle.net/usmanhalalit/aPD5K/