Domanda

Se conoscete un modo migliore per fare questo allora per favore fatemelo sapere. Proprio Ho una pagina che conterrà un sacco di pulsanti, grafici e tabelle. Ho letto di fermare la propagazione evento ed è quello che userò. Voglio attivare aiuto su elementi cerain. Ho una casella di controllo che cambia il cursore su di aiuto attivato div. Quello che voglio fare è anteporre una funzione di aiuto prima che il normale comportamento del clic.

In sostanza è come questo.

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

Quello che voglio è che se la casella di controllo viene cliccato aggiungo una classe CSS (già fatto) e poi aggiungo un gestore di click prima del normale scatto. Quando l'elemento viene cliccato poi il helpfunction viene eseguito e il gestore Fare clic sul pulsante di default non viene generato. Quando la casella è selezionata aiuto Voglio rimuovere la funzione di aiuto. Mi rendo conto che avrei potuto hardocde questo per ogni elemento e avere un controllo nel helperfunction per vedere se la casella è selezionata. Ma io preferirei un modo più generico di farlo.

Grazie

Giovanni

È stato utile?

Soluzione

        $(":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();

                }
            });
        });

Altri suggerimenti

Penso che si desidera giocare con bind / svincolare in questo caso - vedi http: / /docs.jquery.com/Events/unbind#typefn

quando si seleziona la casella di controllo è possibile associare nuovi eventi click sui tasti - e separare in seguito.

Probabilmente si dovrà anche lavorare con Event.preventDefault ( http: //docs.jquery .com / Eventi / jQuery.Event ) al fine di sopprimere il comportamento predefinito click se non volete che

Si potrebbe usare qualcosa del calibro di:

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

Senza più codice è difficile essere più precisi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top