Frage

Wenn Sie eine bessere Art und Weise wissen dies zu tun, dann lass es mich wissen. Recht Ich habe eine Seite, die viele Tasten, Diagramme und Tabellen enthalten. Ich habe über die Einstellung Ereignis propogation gelesen und das ist, was ich verwenden werde. Ich möchte Hilfe auf cerain Elemente ermöglichen. Ich habe eine Checkbox, die den Cursor auf die Hilfe aktiviert divs ändert. Was ich tun möchte, ist eine Hilfefunktion vor dem normalen Klickverhalten voranstellen.

Im Grunde ist es so.

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

, was ich will, ist, dass, wenn die Checkbox angeklickt ich eine CSS-Klasse hinzufügen (bereits geschehen) und dann einen Click-Handler vor dem normalen Klick füge ich hinzu. Wenn das Element angeklickt wird, dann wird die Hilfefunktion ausführen und die Click-Handler Standardschaltfläche wird nicht ausgelöst. Wenn die Hilfe Checkbox deaktiviert ist möchte ich die Hilfe-Funktion entfernen. Ich weiß, dass ich das könnte für jedes Element hardocde und habe einen Scheck in helperfunction zu sehen, ob das Kontrollkästchen aktiviert ist. Aber ich würde es vorziehen, eine allgemeinere Art und Weise tun.

Danke

John

War es hilfreich?

Lösung

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

                }
            });
        });

Andere Tipps

Ich glaube, Sie mit binden spielen, um mögen / unbind in diesem Fall - siehe http: / /docs.jquery.com/Events/unbind#typefn

Wenn Sie das Kontrollkästchen können Sie neue Click-Ereignisse binden auf Tasten - und lösen sie später.

Sie werden wahrscheinlich auch mit Event.preventDefault arbeiten ( http: //docs.jquery .com / Event / jQuery.Event ), um das Standard-Klick-Verhalten zu unterdrücken, wenn Sie es nicht wollen,

Sie würden etwas die gerne von verwenden:

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

Ohne mehr Code ist es schwer, genauer zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top