Sou muito novo em nossa equipe de desenvolvimento.
Eu preciso de alguns argumentos fortes e / ou exemplos de "armadilhas", para que meu chefe finalmente entenda as vantagens do JavaScript Discreto, para que ele e o resto da equipe parem de fazer coisas como estas:
<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>
Sugeri usar um padrão bastante comum:
<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();
});
A razão pela qual meu chefe (e outros) não deseja usar essa abordagem é que a Inspeção de eventos no FireBug (ou Chrome Dev Tools) não é mais simples, por exemplo, com
<input type="text" name="somename" id="someid" onchange="performChange()">
ele pode ver imediatamente qual função é executada no evento de mudança e pular direto para ele em um enorme arquivo JS cheio de código espaguete .
No caso do JavaScript discreto, a única coisa que ele veria é:
<input type="text" name="somename" id="someid" />
e ele não tem idéia se alguns eventos, se houver, foram vinculados a esse elemento e qual função será acionada.
Eu estava procurando uma solução e a encontrei:
$(document).data('events') // or .. $(document).data('events').click
mas essa "abordagem" levou "muito tempo ..." para descobrir qual função dispara em qual evento, então me disseram para interromper eventos de vinculação como esse.
Estou pedindo alguns exemplos ou fortes vantagens ou qualquer outro tipo de sugestão para "Por que devemos usar o UJS"
ATUALIZAÇÃO: a sugestão de "mudar de emprego" não é uma solução ideal.
ATUALIZAÇÃO 2: Ok, eu não apenas sugeri o uso de ligação de eventos jQuery, mas o fiz . Depois que escrevi toda a delegação de eventos, o chefe veio até mim e me perguntou: por que estou delegando eventos com uma abordagem diferente e uma abordagem que ele não sabe
Mencionei alguns benefícios óbvios, como - Existem 15 campos de entrada e todos têm um onchange
evento (não apenas alguns deles também onkeyup
). Portanto, é mais pragmático escrever esse tipo de delegação de eventos para TODOS os campos de entrada, em vez de fazê-lo 15 vezes, especialmente se todo o HTML for renderizado com o eco do PHP ->echo '... <input type="text" id="someid" ... />...'
js-this-class-do-something
classe, portanto, você pode facilmente CTRL + F para ela no código.