Pergunta

Se você conhece uma maneira melhor de fazer isso, então por favor me avise. Direito Eu tenho uma página que contêm grande quantidade de botões, gráficos e tabelas. Eu li sobre parar propogation evento e é isso que eu vou estar usando. Quero permitir que a ajuda em elementos Cerain. Eu tenho uma caixa de seleção que muda o cursor sobre ajuda habilitado divs. O que eu quero fazer é preceder uma função de ajuda antes que o comportamento normal clique.

Basicamente é assim.

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

o que eu quero é que, se a caixa de seleção é clicado eu adicionar uma classe css (já feito) e, em seguida, adicionar um manipulador de cliques antes do clique normal. Quando o elemento é clicado, em seguida, o helpfunction é executado eo manipulador de clique botão padrão não é acionado. Quando a caixa de ajuda está desmarcada Quero remover a função de ajuda. Eu percebo que eu poderia hardocde isso para cada elemento e tem um cheque no helperfunction para ver se a caixa está marcada. Mas eu prefiro uma maneira mais genérica de fazê-lo.

Graças

John

Foi útil?

Solução

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

                }
            });
        });

Outras dicas

Eu acho que você quer brincar com bind / unbind neste caso - veja http: / /docs.jquery.com/Events/unbind#typefn

ao selecionar a caixa de seleção você pode vincular novos eventos de clique em seus botões - e desvincular-los mais tarde.

Você provavelmente também terá que trabalhar com event.preventDefault ( http: //docs.jquery .com / Eventos / jQuery.Event ), a fim de suprimir o comportamento padrão clique se você não quer que ele

Você usaria algo que o gosta de:

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

Sem mais código é difícil para ser mais exato.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top