Я довольно новичок в нашей команде develepors.
Мне нужны веские аргументы и / или примеры «подводных камней», чтобы мой начальник наконец-то понял преимущества ненавязчивого JavaScript, чтобы он и остальная команда перестали делать такие вещи:
<input type="button" class="bow-chicka-wow-wow"
onclick="send_some_ajax(); return false;" value="click me..." />
а также
<script type="text/javascript">
function send_some_ajax()
{
// bunch of code ... BUT using jQuery !!!
}
</script>
Я предложил использовать довольно распространенный шаблон:
<button id="ajaxer" type="button">click me...</button>
а также
<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();
});
Причина, по которой мой босс (и другие) не хотят использовать этот подход, заключается в том, что Event-Inspection в FireBug (или Chrome Dev Tools) больше не прост, например, с
<input type="text" name="somename" id="someid" onchange="performChange()">
он может сразу увидеть, какая функция выполняется в событии change, и сразу перейти к нему в огромном JS-файле, полном спагетти-кода .
В случае с ненавязчивым JavaScript единственное, что он увидит, это:
<input type="text" name="somename" id="someid" />
и он не знает, были ли какие-либо события, если таковые имеются, связаны с этим элементом и какая функция будет запущена.
Я искал решение и нашел его:
$(document).data('events') // or .. $(document).data('events').click
но этот «подход» заставил его «слишком долго ...» выяснить, какая функция срабатывает при каком событии, поэтому мне сказали остановить подобные события.
Я прошу у вас несколько примеров, сильных преимуществ или любые другие предложения для «Почему мы должны использовать UJS»
ОБНОВЛЕНИЕ: предложение «сменить работу» не является идеальным решением.
ОБНОВЛЕНИЕ 2: Хорошо, я не только предложил использовать привязку событий jQuery, я сделал это . После того, как я написал все делегирование событий, ко мне подошел Босс и спросил, почему я делаю делегирование событий с другим подходом и подходом, которые он не знает
Я упомянул о некоторых очевидных преимуществах, таких как - Есть 15 полей ввода, и у каждого из них есть onchange
событие (не только у некоторых из них также onkeyup
). Поэтому более прагматично писать такого рода делегирование событий для ВСЕХ полей ввода, вместо того, чтобы делать это 15 раз, особенно если весь HTML будет отображаться с помощью PHP echo ->echo '... <input type="text" id="someid" ... />...'
js-this-class-do-something
класс, так что вы можете легко использовать CTRL + F для этого в коде.