2010-07-10 10 views
109

Potrzebuję zmienić niektóre wejścia pola wyboru na ukryte dane wejściowe dla niektórych, ale nie wszystkich wejść na stronie.docelowe dane wejściowe według typu i nazwy (wybierak)

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

Kod jQuery poniżej tylko wybiera wejście od typu, który powoduje, że wszystkie pola wyboru, aby zmienić na ukrytych wejść Czy istnieje sposób, aby sprawdzić zarówno typ wejścia = „wyboru” i name = „ProductCode” jako selektor, więc mogę konkretnie kierować reklamy na te, które chcę zmienić?

$("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 
}); 

Odpowiedz

227

Chcesz multiple attribute selector

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

lub

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

Byłoby lepiej użyć klasę CSS w celu zidentyfikowania tych, które chcesz zaznaczyć jednak, jak wielu współczesnych przeglądarek zaimplementować metodę document.getElementsByClassName który będzie używany do wyboru elementów i znacznie szybciej niż wybierając atrybutem name

+0

Obaj pracowali dla mnie, ale użyłem drugiej metody. THX, mam inne pytanie, ale zadam nowe pytanie. – user357034

18

Można łączyć atrybutów selektorów w ten sposób:

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

tak, że element musi spełniać oba warunki. Oczywiście możesz użyć tego dla więcej niż dwóch. Nie rób też: [type=checkbox]. jQuery ma selektor, że mianowicie :checkbox więc końcowy wynik jest:

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

atrybutów selektorów wolno jednak tak zalecana podejściem jest użycie identyfikatora i klasy selektorów, gdzie to możliwe. Można zmienić znaczników do:

<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"> 

pozwala używać znacznie szybszego wyboru z:

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

Oczywiście to również działa, ale mogę dać tylko jedną osobę za właściwą odpowiedź. :) Jedną z rzeczy jest to, że nie mogę celować w klasę, ponieważ nie mam dostępu do znaczników, chyba że dodaję klasę i jaki punkt by to zrobił. Ale Thx !!! – user357034

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

To jest sposób CSS i jestem prawie pewien, że zadziała w jQuery.

Powiązane problemy