Question

Si vous connaissez une meilleure façon de faire cela, alors s'il vous plaît laissez-moi savoir. J'ai droit une page qui contiendra beaucoup de boutons, des graphiques et des tableaux. J'ai lu au sujet de l'événement et l'arrêt propogation c'est ce que je vais utiliser. Je souhaite activer l'aide sur les éléments Cerain. J'ai une case à cocher qui change le curseur sur divs d'aide activée. Ce que je veux faire est préfixer une fonction d'aide avant le comportement de clic normal.

Fondamentalement, il est comme ça.

<input type="button" value="Click me" onclick="alert ('hello')" />

ce que je veux est que si la case à cocher est cliqué ajouter une classe css (déjà fait), puis-je ajouter un gestionnaire de clic avant le clic normal. Lorsque l'élément est cliqué alors le helpfunction est exécuté et le bouton par défaut gestionnaire de clic ne se déclenche pas. Lorsque la case d'aide n'est pas cochée, je veux supprimer la fonction d'aide. Je me rends compte que je pouvais hardocde cela pour chaque élément et un chèque au helperfunction pour voir si la case est cochée. Mais je préfère une façon plus générique de le faire.

Merci

John

Était-ce utile?

La solution

        $(":button").each(function() {

            // your button
            var btn = $(this); 

            // original click handler
            var clickhandler = btn.attr("onclick");
            btn.attr("onclick", "return false;");

            // new click handler
            btn.click(function() {

                if ($("#chkbox").attr("checked") == true) {

                    // TODO: show your help
                    // TODO: catch event

                }
                else {

                    clickhandler();

                }
            });
        });

Autres conseils

Je pense que vous voulez jouer avec bind / délie dans ce cas - voir http: / /docs.jquery.com/Events/unbind#typefn

lors de la sélection de la case à cocher vous pouvez lier les nouveaux événements de cliquer sur vos boutons - et les délie plus tard.

Vous aurez probablement aussi travailler avec Event.preventDefault ( http: //docs.jquery .com / Evénements / jQuery.Event ) afin de supprimer le comportement de clic par défaut si vous ne le voulez

Vous utilisez quelque chose des gens:

$("a").bind("click", function(event){
 if ($("#helpcheckbox").attr('checked')
 {
  event.preventDefault();
  // do something
 }
});

Sans plus de code, il est difficile d'être plus précis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top