2010-07-10 52 views
109

我需要將某些複選框輸入更改爲隱藏輸入,以用於頁面上的某些輸入但不是全部輸入。按類型和名稱輸入的目標(選擇器)

<input type="checkbox" name="ProductCode"value="396P4"> 
<input type="checkbox" name="ProductCode"value="401P4"> 
<input type="checkbox" name="ProductCode"value="F460129"> 

下面僅jQuery代碼由這導致所有的複選框,以變更爲隱藏的輸入類型選擇輸入有一種方法,以檢查這兩個類型的輸入=「複選框」和名稱=「產品代碼」作爲選擇器,所以我可以專門針對那些我想改變?

$("input[type='checkbox']").each(function(){ 
var name = $(this).attr('name'); // grab name of original 
var value = $(this).attr('value'); // grab value of original 
var html = '<input type="hidden" name="'+name+'" value="'+value+'" />'; 
$(this).after(html).remove(); // add new, then remove original input 
}); 

回答

227

你想要一個multiple attribute selector

$("input[type='checkbox'][name='ProductCode']").each(function(){ ... 

$("input:checkbox[name='ProductCode']").each(function(){ ... 

最好使用CSS類來標識要選擇的那些,但是由於許多現代瀏覽器都實現了document.getElementsByClassName方法,該方法將用於選擇元素並且比通過name屬性選擇要快得多

+0

兩者都適合我,但我使用第二種方法。 THX,我還有一個問題,但我會提出一個新問題。 – user357034 2010-07-10 22:57:16

18

您可以將屬性選擇這種方式:

$("[attr1=val][attr2=val]")... 

,這樣的元素必須滿足兩個條件。當然,你可以使用這兩個以上。另外,不要做[type=checkbox]。 jQuery有該選擇器,即:checkbox所以最終的結果是:

$("input:checkbox[name=ProductCode]")... 

屬性選擇器是緩慢然而所以推薦的方法是在可能的地方使用ID和類選擇。您可以將您的標記更改爲:

<input type="checkbox" class="ProductCode" name="ProductCode"value="396P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="401P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="F460129"> 

讓您使用的更快的選擇:

$("input.ProductCode")... 
+0

很明顯,這個方法也適用,但我只能給一個人正確的答案。 :)有一件事情是我無法按照課程目標,因爲除非添加課程,否則我無法訪問標記。但Thx! – user357034 2010-07-10 22:59:35

4
input[type='checkbox', name='ProductCode'] 

這就是CSS的方式,我幾乎肯定它會在jQuery中工作。