2010-09-23 4 views
1

je les suivantes:sélecteur Jquery aide

<form id="my_form"> 
    <input type="checkbox" name="a" value="a"> Check <img src="..." /> 
</form> 

Pour gérer le contrôle et les événements décocher je fais (et cela fonctionne):

$('#my_form :checkbox).click(function() { 
    if($(this).is(':checked')) { 
     //... 
    } 
    //... 
}); 

Ma question est: à l'intérieur de cette fonction de clic, Comment puis-je sélectionner l'étiquette <img> qui se trouve juste à côté de la case à cocher? Puis-je le faire sans spécifier d'identifiant pour l'image? ..by "select" Je veux dire que je dois pouvoir cacher() et montrer(). Merci

Répondre

1

Vous pouvez utiliser .next() puisqu'il est la suivante (immédiate prochaine, ce qui est important) élément de frères et soeurs, comme ceci:

$('#my_form :checkbox').click(function() { 
    if(this.checked) { 
     var img = $(this).next('img'); 
    } 
}); 

Je pense que ce que vous êtes en fin de compte AFTER est fait plus facile avec .toggle(bool), comme ceci:

$('#my_form :checkbox').change(function() { 
    $(this).next('img').toggle(this.checked); 
}); 

cela montrera la <img> lorsqu'elle est cochée, et se cacher quand il est pas. Notez que j'ai utilisé .change() ici, puisque c'est l'événement que vous voulez généralement quand vous avez affaire à une case à cocher pour toujours obtenir l'état correct.

+0

bah! c'est trop facile. Merci! En fait, l'image à côté de la case à cocher est une image de chargement ajax .. donc le basculement est un peu plus compliqué (j'ai probablement besoin de le cacher dans le rappel de succès ajax). – bba

+0

@bba - Vous pouvez appeler '.change()' sans params, sur la case à cocher pour affecter l'image comme si quelqu'un changeait la vérification via l'interface utilisateur ... cela peut être utile pour réduire considérablement votre code, Il suffit de déclencher le code dans le gestionnaire que vous avez déjà. Je ne suis pas sûr que cela aide car je ne connais pas votre configuration exacte, juste jeter là-bas au cas où il le fait :) –