Gestione degli eventi in linea Javascript rispetto a gestori di eventi jQuery esterni

2

Lavorare su un sito Web dinamico che carica le informazioni da un file JSON e quindi popola la pagina con detti elementi.

La mia domanda ha a che fare con la gestione degli eventi - al momento non vedo alcun motivo per cui avrei bisogno di aggiungere gestori di eventi inline se potessi usare il gestore jQuery equivalente in un file di script esterno. Potrei vedere l'argomento in cui si direbbe che consente un maggiore controllo sugli eventi, ma sarebbe vero?

Ecco i due metodi che sto guardando:

Inline:

<div class="family" onclick="goToFamilyPage()">This Family</div>

Script esterno / importato:

$(document).on('click', '.family', function() {
    //do stuff
});

Quale sarebbe il vantaggio di uno di questi contro l'altro?

    
posta Adjit 13.04.2015 - 18:41
fonte

3 risposte

0

È meglio usare i gestori di eventi. I gestori di eventi mantengono JavaScript fuori dal tuo codice HTML, che di solito è meglio per ragioni di disaccoppiamento. L'unica volta che JavaScript in linea è ok è se lo si inietta tramite un modello. Questo è spesso fatto quando con React.js perché genera molto HTML (che è discutibilmente un modello).

    
risposta data 13.04.2015 - 19:19
fonte
1

Il vantaggio del primo approccio è che, leggendo il tuo file HTML, sai anche cosa succede quando si fa clic sul div (cioè gotoFamilyPage) senza dover scavare nei file di origine javascript, che può diventare piuttosto grande.

In altre parole, il tuo file HTML descrive sia la struttura che comportamento della tua pagina. Questo è meglio secondo me. Molte persone citano l'accoppiamento come una ragione per evitare gestori di eventi in linea, ma se chiedi loro quando era l'ultima volta che l'accoppiamento era un problema per loro, avrebbero dovuto pensarci.

A meno che il codice non sia breve, i gestori in linea dovrebbero chiamare una funzione. Il nome della funzione dovrebbe essere descrittivo. Nel tuo caso, gotoFamilyPage () è perfetto. L'insieme delle funzioni Javascript richiamate dai gestori di eventi in linea comprende essenzialmente un'interfaccia che tuttavia raggiunge il disaccoppiamento di codice e presentazione.

    
risposta data 21.06.2016 - 14:47
fonte
0

Secondo me, il gestore di eventi jQuery è preferibile quando si lavora con un evento dinamico vincolante in base a determinate condizioni. Es.

Nel modulo Dettagli dipendente, ci sono più pulsanti, ad esempio Annulla e Salva e si attiva il pulsante Annulla sul caricamento del documento e il pulsante Salva quando l'utente riempie tutti i dettagli del Dipendente.

Se usi il gestore di eventi javascript,

Questa famiglia

in questo meccanismo di gestione degli eventi, è difficile gestire l'evento condizionale, supponiamo che tu voglia consentire questo evento click su determinate condizioni, quindi è difficile gestirlo.

Ma se usi il gestore di eventi jQuery puoi bind () e unbind () eventi condizionalmente.

$ ( "# famiglia") slegare ( "click");.

$ ("# famiglia"). bind ("clic", funzione () {

});

Se vuoi abilitare il pulsante Salva evento click quindi associa questo evento ad altri wind unbind in modo che l'utente non invii i dati al server.

    
risposta data 29.07.2015 - 14:43
fonte

Leggi altre domande sui tag