Я досить нова в нашій команді девелепорсів.
Мені потрібні кілька вагомих аргументів та / або прикладів «підводних підводів», тому мій начальник нарешті зрозуміє переваги ненав’язливого 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();
});
Причина, через яку мій начальник (та інші) не хочуть використовувати такий підхід, полягає в тому, що перевірка подій у FireBug (або інструментах Chrome Dev) вже не проста, наприклад з
<input type="text" name="somename" id="someid" onchange="performChange()">
він може відразу побачити, яка функція виконується на event-event і перейти до неї у величезний 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 буде надано з відлунням PHPecho '... <input type="text" id="someid" ... />...'
js-this-class-do-something
клас, так що ви можете легко CTRL + F для нього в коді.