jQuery: Come posso utilizzare event.preventDefault () con gli eventi personalizzati?

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

  •  19-09-2019
  •  | 
  •  

Domanda

Come posso sapere nel mio codice di attivazione che preventDefault è stato chiamato?

$(document).trigger('customEvent', params);
if (/* ??? */)
    doDefaultActions();
È stato utile?

Soluzione

grilletto () può anche prendere un oggetto evento, quindi se è possibile creare un oggetto evento, in questo modo:

var event = jQuery.Event("customEvent");
$(document).trigger(event);

allora si può controllare dopo il grilletto per vedere se preventDefault () è stato chiamato in questo modo:

var prevented = event.isDefaultPrevented();

Altri suggerimenti

Se stai chiedendo come scoprire se il difetto è stato impedito, uso:

event.isDefaultPrevented()

Ciò restituirà 'vero' o 'falso' basato sulla necessità o meno preventDefault () è stato chiamato.

EDIT: http://api.jquery.com/event.isDefaultPrevented/

Gli eventi personalizzati non hanno alcune azioni predefinite che accade .. (sono su misura).

D'altra parte, se si vuole fermare l'effetto spumeggiante di questo evento per gli altri, allora dare un'occhiata a triggerHandler che non bolle fino alla gerarchia ..

Per quanto ne so il "preventDefault ()" chiamata è su come evitare le risposte browser nativo a cose come i clic sui tag di ancoraggio o di pressione dei tasti nei campi di testo. Una volta che il ciclo di gestione degli eventi è finita, è finita. Per gli eventi confezionati, io non penso che abbia alcun effetto a tutti dal momento che è tutta una questione di sistema di elaborazione degli eventi jQuery e non sulla funzionalità native del browser.

Il vostro codice potrebbe creare una sorta di bandiera da qualche parte, al fine di comunicare con il "mondo esterno".

[modifica] ooh si potrebbe provare con il gestore riporre un riferimento all'oggetto evento da qualche parte che il codice exteral può trovare, e poi controllare esternamente con "isDefaultPrevented ()". Non so se tale piacerebbe lavorare comunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top