jQuery: Como faço para usar event.preventDefault () com eventos personalizados?

StackOverflow https://stackoverflow.com/questions/2229647

  •  19-09-2019
  •  | 
  •  

Pergunta

Como posso saber no meu código de desencadeamento que preventDefault tem sido chamado?

$(document).trigger('customEvent', params);
if (/* ??? */)
    doDefaultActions();
Foi útil?

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.

EDITAR:http://api.jquery.com/event.isdefaultprevented/

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.

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