Jestem całkiem nowy w naszym zespole deweloperów.
Potrzebuję silnych argumentów i / lub przykładów „pułapek”, aby mój szef w końcu zrozumiał zalety dyskretnego JavaScript, dzięki czemu on i reszta zespołu przestaną robić takie rzeczy:
<input type="button" class="bow-chicka-wow-wow"
onclick="send_some_ajax(); return false;" value="click me..." />
i
<script type="text/javascript">
function send_some_ajax()
{
// bunch of code ... BUT using jQuery !!!
}
</script>
Zasugerowałem użycie dość powszechnego wzoru:
<button id="ajaxer" type="button">click me...</button>
i
<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();
});
Powodem, dla którego mój szef (i inni) nie chce stosować tego podejścia, jest to, że Inspekcja zdarzeń w FireBug (lub Chrome Dev Tools) nie jest już prosta, np. Z
<input type="text" name="somename" id="someid" onchange="performChange()">
natychmiast widzi, jaką funkcję wykonuje przy zdarzeniu zmiany i przeskakuje do niego w ogromnym pliku JS pełnym kodu spaghetti .
W przypadku dyskretnego JavaScript jedyne, co zobaczył to:
<input type="text" name="somename" id="someid" />
i nie ma pojęcia, czy niektóre zdarzenia, jeśli w ogóle, były związane z tym elementem i która funkcja zostanie uruchomiona.
Szukałem rozwiązania i znalazłem je:
$(document).data('events') // or .. $(document).data('events').click
ale to „podejście” spowodowało, że zajęło to „zbyt długo ...”, aby dowiedzieć się, która funkcja uruchamia się na którym zdarzeniu, więc powiedziano mi, aby przestać wiązać takie zdarzenia.
Proszę o kilka przykładów, silnych zalet lub innych sugestii dotyczących „Dlaczego warto korzystać z UJS”
AKTUALIZACJA: sugestia „zmiany pracy” nie jest idealnym rozwiązaniem.
AKTUALIZACJA 2: Ok, nie tylko zasugerowałem użycie wiązania zdarzeń jQuery, ale zrobiłem to . Po napisaniu wszystkich Delegacji wydarzeń szef przyszedł do mnie i zapytał, dlaczego deleguję wydarzenia z innym podejściem i podejściem, którego nie zna
Wspomniałem o pewnych oczywistych korzyściach, takich jak: - Jest 15 pól wejściowych i wszystkie z nich mają onchange
zdarzenie (nie tylko, niektóre z nich również onkeyup
). Więc bardziej pragmatyczne jest napisanie tego rodzaju delegacji zdarzeń dla WSZYSTKICH pól wejściowych, zamiast robić to 15 razy, zwłaszcza jeśli cały HTML będzie renderowany za pomocą echa PHP ->echo '... <input type="text" id="someid" ... />...'
js-this-class-do-something
klasę, więc możesz łatwo CTRL + F dla niego w kodzie.