Ich bin ziemlich neu in unserem Entwicklerteam.
Ich brauche einige starke Argumente und / oder "Fallstricke" -Beispiele, damit mein Chef endlich die Vorteile von unauffälligem JavaScript versteht, sodass er und der Rest des Teams aufhören, Dinge wie diese zu tun:
<input type="button" class="bow-chicka-wow-wow"
onclick="send_some_ajax(); return false;" value="click me..." />
und
<script type="text/javascript">
function send_some_ajax()
{
// bunch of code ... BUT using jQuery !!!
}
</script>
Ich schlug vor, ein ziemlich allgemeines Muster zu verwenden:
<button id="ajaxer" type="button">click me...</button>
und
<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();
});
Der Grund, warum mein Chef (und andere) diesen Ansatz nicht verwenden möchten, ist, dass die Ereignisinspektion in FireBug (oder Chrome Dev Tools) nicht mehr einfach ist, z. B. mit
<input type="text" name="somename" id="someid" onchange="performChange()">
Er kann sofort sehen, welche Funktion bei einem Änderungsereignis ausgeführt wird, und in einer riesigen JS-Datei mit Spaghetti-Code direkt dorthin springen .
Im Falle von unauffälligem JavaScript würde er nur Folgendes sehen:
<input type="text" name="somename" id="someid" />
und er hat keine Ahnung, ob irgendwelche Ereignisse an dieses Element gebunden waren und welche Funktion ausgelöst wird.
Ich suchte nach einer Lösung und fand sie:
$(document).data('events') // or .. $(document).data('events').click
Aber dieser "Ansatz" verursachte, dass es "zu lange ..." dauerte, um herauszufinden, welche Funktion bei welchem Ereignis ausgelöst wurde, und so wurde mir gesagt, dass ich das Binden von Ereignissen wie diesem stoppen solle.
Ich bitte Sie um einige Beispiele, starke Vorteile oder sonstige Vorschläge für "Warum sollten wir UJS verwenden?"
UPDATE: Vorschlag, "den Job zu wechseln", ist keine ideale Lösung.
UPDATE 2: Ok, ich habe nicht nur vorgeschlagen, die jQuery-Ereignisbindung zu verwenden, ich habe es auch getan . Nachdem ich alle Event-Delegationen geschrieben hatte, kam der Boss zu mir und fragte mich, warum ich Event-Delegationen mit anderen Ansätzen und Ansätzen mache, die er nicht kennt
Ich erwähnte einige offensichtliche Vorteile, wie: - Es gibt 15 Eingabefelder und alle haben dann ein onchange
Ereignis (nicht nur einige von ihnen haben auch ein Ereignis onkeyup
). Anstatt es 15 Mal zu tun, insbesondere wenn der gesamte HTML-Code mit PHPs Echo gerendert wird ->echo '... <input type="text" id="someid" ... />...'
js-this-class-do-something
Klasse, daher können Sie im Code einfach STRG + F dafür verwenden.