Come posso sapere nel mio codice di attivazione che è stato chiamato preventDefault
?jQuery: come utilizzare event.preventDefault() con eventi personalizzati?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
Come posso sapere nel mio codice di attivazione che è stato chiamato preventDefault
?jQuery: come utilizzare event.preventDefault() con eventi personalizzati?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
trigger() può anche prendere un oggetto evento, quindi se è possibile creare un oggetto evento, in questo modo:
var event = jQuery.Event("customEvent");
$(document).trigger(event);
Quindi è possibile controllare dopo il grilletto per vedere se preventDefault() è stato chiamato in questo modo: gli eventi
var prevented = event.isDefaultPrevented();
Wow è bello. Impara qualcosa ogni giorno! – Pointy
Sì, l'ho imparato io stesso osservandolo nell'API jQuery. Quindi tutti noi impariamo oggi! –
Questo non sembra essere documentato (almeno su api.jquery.com) - beh, non riesco a trovarlo lo stesso. I documenti sono un po 'meglio ora, ma vorrei ancora che lo renderebbero un wiki. [modifica: ok ora lo vedo nella fonte !!] – Pointy
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 è finito, è finita. Per gli eventi inventati, non penso che abbia alcun effetto dal momento che riguarda tutto il sistema di elaborazione degli eventi jQuery e non le funzionalità del browser nativo.
Il tuo codice potrebbe impostare una sorta di bandiera da qualche parte per comunicare con il "mondo esterno".
[modifica] ooh si potrebbe provare a fare in modo che il gestore stash un riferimento all'oggetto evento da qualche parte che il codice esterno possa trovarlo, quindi verificare esternamente con "isDefaultPrevented()". Non so se funzionerebbe comunque.
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.
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 poi uno sguardo al triggerHandler
che non bolle fino alla gerarchia ..
se si tratta di un evento personalizzato .. c'è non dovrebbe essere un'azione predefinita .. –
È ancora qualcosa che è possibile utilizzare nel meccanismo degli eventi se il gestore viene utilizzato anche per eventi non personalizzati. –
Se il tuo evento personalizzato è davvero personalizzato, cosa stai cercando di impedire? Normalmente preventDefault è usato in modo che il browser non faccia la sua cosa normale. Il browser stesso non conosce o si preoccupa degli eventi personalizzati. –