Я довольно новичок в нашей команде 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 для этого в коде.