2010-10-19 7 views
3

En plus de ma question précédente, j'ai un événement jQuery que je veux déclencher lorsque la case à cocher et l'étiquette elle-même est cliqué.jQuery et les étiquettes

jsFiddle exemple ici.

Mon problème est que lorsque je clique sur l'étiquette, elle ne déclenche pas la fonction. La case à cocher fonctionne bien, comme vous pouvez le voir.

Y a-t-il autre chose que je peux ajouter? Ou est-ce cela?

Merci :)


EDIT: le code de lien jsFiddle

HTML

<div id="scrollwrap"> 
    <div> 
     <input value="1" type="checkbox" name="salgsvilkar" id="checkbox2" style="float:left;"/> 
     <label for="checkbox2" class="akslabel">Salgs og leveringsvilkår er lest og akseptert</label> 
    </div> 
</div> 

jQuery

$(function() { 
    //checkbox 
    $("#checkbox2, .akslabel").click(function() { 
     $("#scrollwrap").toggleClass('highlight'); 
    }); 
}); 

Répondre

4

Vous pouvez changer un peu comme celui-ci pour être sûr:

$(function() { 
    $("#checkbox2").change(function(){ 
    $("#scrollwrap").toggleClass('highlight', this.checked); 
    }); 
}); 

You can test it out here. L'avantage ici est que vous pouvez ajouter un .change() à la fin de faire le match de l'Etat si elle est d'abord vérifié, comme ceci:

$(function() { 
    $("#checkbox2").change(function(){ 
    $("#scrollwrap").toggleClass('highlight', this.checked); 
    }).change(); 
}); 

You can test that version here. Vous pouvez également faire ce beaucoup plus plus générique, like this.

+0

Super, la deuxième version est exactement ce que j'essayais d'accomplir! Merci encore, Nick. Y at-il quelque chose que jQuery ne peut pas faire? – Kyle

+0

@Kyle - malheureusement, il ne fait pas cuire les gaufres, cette partie est manuelle –

+0

Il ne peut pas vous faire applepie ... Mais il peut vous faire un joli camembert avec les bons plugins :) –

2

thi s devrait le faire:

$(function() { 
    //checkbox 
    $("#checkbox2").change(function(){ 
    $("#scrollwrap").toggleClass('highlight'); 
    }); 
}); 

La raison pour laquelle il ne fonctionne pas quand vous avez eu click() est parce que cliquant sur l'étiquette déclenche l'événement deux fois car il est attaché aux deux éléments - ce qui signifie qu'il basculera le nom de classe deux fois !

+0

Merci pour l'explication! – thomaux

+0

Sachez que sur certains navigateurs (lire: IE) l'événement onchange d'une case à cocher est déclenché seulement après avoir perdu le focus, pas au moment du clic lui-même. –

Questions connexes