2010-11-12 5 views
1

j'ai un tas de champs et certains d'entre eux ont des labels commeDéfinition d'une variable à l'aide jquery .attr puis changer

<input id="1" /><label for="1" /> 
<input id="2" /> 
<input id="3" /><label for="3" /> 

Pour chaque étiquette que je veux faire quelque chose comme

var for_label = $(label).attr("for"); 

puis utilisez la variable pour appliquer un style au champ de saisie approprié. Comment dois-je faire cela? J'apprécierais beaucoup un exemple, je suis assez nouveau à Javascript ...

+2

ID ne doit pas commencer par des chiffres. –

+0

merci beaucoup, il était juste un exemple thoght, le html réelle est beaucoup plus complexe! – Himmators

+0

@felix, je sais que ce n'est pas une bonne pratique, mais pourquoi ne devrions-nous pas avoir des numéros comme ids .., ce n'est pas autorisé ou c'est juste une convintion. – kobe

Répondre

4
$('label').each(function() { 
    // Get corresponding input element: 
    var input = $('#' + $(this).attr('for')); 
    // apply some CSS class 
    input.css('someStyle'); 
}); 

En tant que note latérale les ids ne peuvent pas commencer par des nombres.

+0

Darin - Je pense que pour les éléments '

+0

pouvez-vous faire 'this.for'? Je pense que vous devrez écrire 'this [0] .for' – hunter

+0

Parce que la fonction' $() 'renvoie un objet jquery. Utilisez 'this.for' pour obtenir l'identifiant. –

1

$(label).attr("for") renvoie l'ID de l'étiquette, using the attr method. Vous voulez ensuite select the element with that id donc: $("#" + $(label).attr("for")) maintenant vous avez l'élément d'entrée sélectionné. Vous pouvez changer son style avec .css(). Par exemple: $("#" + $(label).attr("for")).css("color", "blue"). To loop through all the labels you can d o:

$("label").each(function(){ 
    $("#" + $(this).attr("for")).css("color", "blue");//note that this refers to the label in this context 
});