jQuery: Como faço para usar event.preventDefault () com eventos personalizados?
-
19-09-2019 - |
Pergunta
Como posso saber no meu código de desencadeamento que preventDefault
tem sido chamado?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
Solução
trigger () também pode tomar um objeto de evento; portanto, se você pode criar um objeto de evento, como assim:
var event = jQuery.Event("customEvent");
$(document).trigger(event);
Então você pode verificar após o gatilho para ver se o PreventDefault () foi chamado como assim:
var prevented = event.isDefaultPrevented();
Outras dicas
Se você está perguntando como descobrir se o padrão foi ou não impedido, use:
event.isDefaultPrevented()
Isso retornará 'verdadeiro' ou 'falso' com base no fato de o PreventDefault () foi chamado ou não.
Os eventos personalizados não têm algumas ações padrão que acontecem .. (eles são personalizados).
Por outro lado, se você quiser parar o efeito borbulhante deste evento para outras pessoas, dê uma olhada triggerHandler
que não borbulha até a hierarquia.
Que eu saiba, a chamada "PreventDefault ()" é impedir a prevenção das respostas do navegador nativo a itens como cliques em tags de âncora ou teclas nos campos de texto. Depois que o ciclo de manuseio de eventos termina, acabou. Para eventos inventados, não acho que isso tenha nenhum efeito, pois é tudo sobre o sistema de processamento de eventos jQuery e não sobre a funcionalidade do navegador nativo.
Seu código pode definir algum tipo de bandeira em algum lugar para se comunicar com o "mundo exterior".
Editar] Ooh Você pode tentar esconder o manipulador uma referência ao objeto de evento em algum lugar de que o código externo pode encontrá -lo e, em seguida, verifique externamente com "isDefaultPrevered ()". Não sei se isso funcionaria no entanto.