O jquery toggle chama preventDefault () por padrão, para que os padrões não funcionem. você não pode clicar em uma caixa de seleção, não pode clicar em um link etc. etc
é possível restaurar o manipulador padrão?
javascript
jquery
events
preventdefault
event-bubbling
Stijn de Witt
fonte
fonte
preventDefault
depois que ela foi chamada. Atualmente, esta pergunta é realmente 'como desassociar um ouvinte de evento com o jQuery?'.Respostas:
No meu caso:
$('#some_link').unbind('click');
funcionou como o único método para restaurar a ação padrão.Como visto aqui: https://stackoverflow.com/a/1673570/211514
fonte
É bastante simples
Vamos supor que você faça algo como
agora, para reverter para a situação original, faça o seguinte ...
A partir deste site .
fonte
Não é possível restaurar um,
preventDefault()
mas o que você pode fazer é enganá-lo :)Se você quiser dar um passo adiante, pode usar o botão de acionamento para acionar um evento.
fonte
fonte
em alguns casos *, você pode inicialmente em
return false
vez dee.preventDefault()
, e quando desejar restaurar o padrão parareturn true
.* Significado quando você não se importa a subida do evento e você não usar o
e.stopPropagation()
juntamente come.preventDefault()
Veja também pergunta semelhante (também na pilha Overflow)
ou, no caso da caixa de seleção, você pode ter algo como:
fonte
Você pode restaurar a ação padrão (se for uma sequência HREF) fazendo o seguinte:
window.location = $(this).attr('href');
fonte
se é um link então
$(this).unbind("click");
reativaria o clique no link e o comportamento padrão seria restaurado.Eu criei uma demo JS violino de demonstração para demonstrar como isso funciona:
Aqui está o código do violino JS:
HTML:
Javascript:
fonte
Teste este código, acho que resolva seu problema:
Referência
fonte
A melhor maneira de fazer isso usando o espaço para nome. É uma maneira segura e protegida. Aqui .rb é o espaço para nome que garante que a função unbind funcione nesse keydown específico, mas não em outros.
ref1: http://idodev.co.uk/2014/01/safely-binding-to-events-using-namespaces-in-jquery/
ref2: http://jqfundamentals.com/chapter/events
fonte
Desativar:
Habilitar:
fonte
O método preventDefault () da interface Event indica ao agente do usuário que, se o evento não for tratado explicitamente, sua ação padrão não deve ser tomada como normalmente. O evento continua a se propagar como de costume, a menos que um de seus ouvintes de evento chame stopPropagation () ou stopImmediatePropagation (), um dos quais finaliza a propagação de uma só vez.
Chamar preventDefault () durante qualquer estágio do fluxo de eventos cancela o evento, significando que qualquer ação padrão normalmente executada pela implementação como resultado do evento não ocorrerá.
Você pode usar Event.cancelable para verificar se o evento é cancelável. Chamar preventDefault () para um evento não cancelável não tem efeito.
fonte
Eu tive um problema em que precisava da ação padrão somente após a conclusão de alguma ação personalizada (ativar os campos de entrada desativados em um formulário). Embrulhei a ação padrão (submit ()) em uma função recursiva própria (dosubmit ()).
fonte
if (predef == true)
mais explícito, você está adicionando 7 caracteres ao seu código JS sem motivo.if (prevdef)
é tão legível. Além disso, você adicionou um manipulador de eventos anônimos redundantes quando.click(dosubmit)
faz a mesma coisa.click(function(){dosubmit()})
que nenhum parâmetro é passado.Use um booleano:
Eu uso isso em um aplicativo Web progressivo para impedir a rolagem / zoom em algumas 'páginas' enquanto permite outras.
fonte
Você pode definir para formar 2 classes. Depois de definir seu script JS para um deles, quando você deseja desabilitá-lo, basta excluir a classe com script vinculado deste formulário.
HTML:
JS
fonte
fonte
Não sei ao certo o que você quer dizer: mas aqui está uma solução para um problema semelhante (e possivelmente o mesmo) ...
Costumo usar preventDefault () para interceptar itens. No entanto: não é o único método de interceptação ... muitas vezes você pode apenas querer uma "pergunta" após a qual o comportamento continua como antes ou para. Em um caso recente, usei a seguinte solução:
$("#content").on('click', '#replace', (function(event){ return confirm('Are you sure you want to do that?') }));
Basicamente, o "impedir padrão" deve interceptar e fazer outra coisa: o "confirmar" foi projetado para uso em ... bem - confirmando!
fonte