J'ai deux fonctions.
La première fonction traduit un DIV Cliquez sur une bascule cochée/décochée. La deuxième fonction traduit une case à cocher Changez-vous dans un événement Masquer/Afficher.
Le problème est que lorsque j'utilise la première fonction pour vérifier/décocher la case, la deuxième fonction n'est pas appelée. Je suis nouveau à JavaScript, merci.
<script type="text/javascript">
$(document).ready(function() {
$(":checkbox").parent().click(function(evt) {
if (evt.target.type !== 'checkbox') {
var $checkbox = $(":checkbox", this);
$checkbox.attr('checked', !$checkbox.attr('checked'));
evt.stopPropagation();
return false;
}
});
});
</script>
<script type="text/javascript">
$(document).ready(function() {
$(":checkbox").change(function() {
if($(this).attr("checked")) {
$('.'+this.id).show();
}
else {
$('.'+this.id).hide();
}
});
});
</script>
Le Modifier L'événement ne se déclenche pas lorsque vous modifiez programmablement la valeur d'une case à cocher. Ce que vous pouvez faire pour vous assurer que les incendies sont:
$(":checkbox").parent().click(function(evt) {
if (evt.target.type !== 'checkbox') {
var $checkbox = $(":checkbox", this);
$checkbox.attr('checked', !$checkbox.attr('checked'));
$checkbox.change();
}
});
Ne vous inquiétez pas avec le premier extrait. Utilisez simplement des éléments d'étiquette:
<label><input type="checkbox">Some option</label>
Maintenant, lorsque l'utilisateur clique sur l'étiquette (le texte en regard de la case à cocher), la case à cocher sera activée.
Le deuxième extrait peut être optimisé:
$('input:checkbox').change(function() {
$('#' + this.id).toggle(this.checked);
});
vous utilisez '.'
qui est pour les sélecteurs de classe, utilisez plutôt '#'
Depuis que vous utilisez l'identifiant d'élément. Comme ça:
$(document).ready(function() {
$(":checkbox").bind('change', function() {
if($(this).attr("checked")) {
$('#'+this.id).show();
}
else {
$('#'+this.id).hide();
}
});
});