Soy bastante nuevo en nuestro equipo de desarrolladores.
Necesito algunos argumentos sólidos y / o ejemplos de "trampas", por lo que mi jefe finalmente comprenderá las ventajas de JavaScript discreto, para que él y el resto del equipo dejen de hacer cosas como esta:
<input type="button" class="bow-chicka-wow-wow"
onclick="send_some_ajax(); return false;" value="click me..." />
y
<script type="text/javascript">
function send_some_ajax()
{
// bunch of code ... BUT using jQuery !!!
}
</script>
Sugerí usar un patrón bastante común:
<button id="ajaxer" type="button">click me...</button>
y
<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();
});
La razón por la cual mi jefe (y otros) no quieren usar este enfoque es que la Inspección de eventos en FireBug (o Chrome Dev Tools) ya no es simple, por ejemplo, con
<input type="text" name="somename" id="someid" onchange="performChange()">
puede ver inmediatamente qué función se ejecuta en el evento de cambio y saltar directamente a él en un enorme archivo JS lleno de código de espagueti .
En el caso de JavaScript discreto, lo único que vería es:
<input type="text" name="somename" id="someid" />
y no tiene idea de si algunos eventos, si los hubo, estaban vinculados a este elemento y qué función se activará.
Estaba buscando una solución y la encontré:
$(document).data('events') // or .. $(document).data('events').click
pero, este "enfoque" hizo que tomara "demasiado tiempo ..." descubrir qué función se activa en cada evento, por lo que me dijeron que detuviera eventos de enlace como ese.
Le pido algunos ejemplos o ventajas importantes o cualquier otro tipo de sugerencias para "Por qué deberíamos usar UJS"
ACTUALIZACIÓN: la sugerencia de "cambiar el trabajo" no es una solución ideal.
ACTUALIZACIÓN 2: Ok, no solo he sugerido usar el enlace de eventos jQuery, también lo hice . Después de escribir toda la Delegación de eventos, el Jefe se me acercó y me preguntó, ¿por qué estoy haciendo la delegación de eventos con un enfoque diferente y un enfoque que él no sabe?
Mencioné algunos beneficios obvios, como: hay 15 campos de entrada y todos tienen un onchange
evento (no solo, algunos también lo tienen onkeyup
). Por lo tanto, es más pragmático escribir este tipo de delegación de eventos para TODOS los campos de entrada, en lugar de hacerlo 15 veces, especialmente si todo el HTML se representará con el eco de PHP ->echo '... <input type="text" id="someid" ... />...'
js-this-class-do-something
clase, por lo que puede CTRL + F fácilmente en el código.