Sono abbastanza nuovo nel nostro team di sviluppatori.
Ho bisogno di argomenti forti e / o esempi di "trabocchetto", quindi il mio capo comprenderà finalmente i vantaggi di JavaScript discreto, in modo che lui e il resto del team smettano di fare cose del genere:
<input type="button" class="bow-chicka-wow-wow"
onclick="send_some_ajax(); return false;" value="click me..." />
e
<script type="text/javascript">
function send_some_ajax()
{
// bunch of code ... BUT using jQuery !!!
}
</script>
Ho suggerito di utilizzare un modello abbastanza comune:
<button id="ajaxer" type="button">click me...</button>
e
<script type="text/javascript">
// since #ajaxer is also delivered via ajax, I bind events to document
// -> not the best practice but it's not the point....
$(document).on('click', '#ajaxer', function(ev) {
var $elem = $(this);
ev.preventDefault();
});
Il motivo per cui il mio capo (e altri) non vogliono usare questo approccio è che Event-Inspection in FireBug (o Chrome Dev Tools) non è più semplice, ad es. Con
<input type="text" name="somename" id="someid" onchange="performChange()">
può immediatamente vedere quale funzione viene eseguita su change-event e saltare direttamente ad essa in un enorme file JS pieno di spaghetti-code .
Nel caso di JavaScript discreto l'unica cosa che vedrebbe è:
<input type="text" name="somename" id="someid" />
e non ha idea se alcuni eventi, se presenti, fossero legati a questo elemento e quale funzione verrà attivata.
Stavo cercando una soluzione e l'ho trovata:
$(document).data('events') // or .. $(document).data('events').click
ma, questo "approccio" ha richiesto che impiegasse "troppo tempo ..." per scoprire quale funzione si attiva su quale evento, quindi mi è stato detto di smettere di associare eventi del genere.
Ti sto chiedendo alcuni esempi o forti vantaggi o qualsiasi altro tipo di suggerimenti per "Perché dovremmo usare UJS"
AGGIORNAMENTO: il suggerimento di "cambiare lavoro" non è una soluzione ideale.
AGGIORNAMENTO 2: Ok, non ho solo suggerito di usare l'associazione eventi jQuery, ma l' ho fatto . Dopo aver scritto tutte le delegazioni degli eventi, il capo è venuto da me e mi ha chiesto, perché sto facendo una delegazione di eventi con approccio e approccio diversi che non conosce
Ho citato alcuni ovvi benefici, come - Ci sono 15 campi di input e tutti hanno un onchange
evento (non solo, alcuni hanno anche onkeyup
) Quindi è più pragmatico scrivere questo tipo di delega di eventi per TUTTI i campi di input, invece di farlo 15 volte, specialmente se tutto l'HTML sarà reso con l'eco di PHP ->echo '... <input type="text" id="someid" ... />...'
js-this-class-do-something
classe, quindi puoi facilmente CTRL + F nel codice.