Pregunta

Si conoce una mejor manera de hacer esto, por favor hágamelo saber. Derecho tengo una página que contendrá un montón de botones, gráficos y tablas. He leído acerca de detener propagación evento y eso es lo que va a utilizar. Quiero habilitar ayuda en elementos apliquen a determinados. Tengo una casilla de verificación que cambia el cursor en divs ayuda habilitado. Lo que quiero hacer es anteponer una función de ayuda antes de que el comportamiento normal clic.

Básicamente es así.

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

Lo que quiero es que si se hace clic en la casilla de verificación añado una clase css (ya realizado) y luego agrego un controlador de clic antes de que la clic normal. Cuando se hace clic en el elemento, entonces el helpfunction se ejecuta y el botón predeterminado controlador de clic no se dispara. Cuando la casilla de verificación no está marcada ayuda Quiero eliminar la función de ayuda. Me di cuenta de que podía hardocde esto para cada elemento y tienen un cheque en el helperfunction para ver si está marcada la casilla de verificación. Pero yo preferiría una manera más genérica de hacerlo.

Gracias

John

¿Fue útil?

Solución

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

                }
            });
        });

Otros consejos

Creo que quiere jugar con bind / desenlazar en este caso - ver http: / /docs.jquery.com/Events/unbind#typefn

cuando se selecciona la casilla de verificación puede enlazar nuevos eventos de clic en los botones - y desenlazar ellos más adelante.

Es probable que también tenga que trabajar con event.preventDefault ( http: //docs.jquery .com / Eventos / jQuery.Event ) con el fin de suprimir el comportamiento por defecto, pulse si no quieres que

Se podría utilizar algo de la talla de:

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

Sin más código que es difícil ser más exactos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top