Ultimamente ho studiato molti esempi di javascript, sia con / senza librerie, jQuery per menzionarne uno.
Come vecchio sviluppatore di JavaScript, ho imparato presto a utilizzare javascript discreto dove si aggiungevano eventi di clic del mouse a un gestore globale utilizzando document.onclick = mylib.document_onclick;
Quindi, taggando qualsiasi elemento con un attributo / proprietà / expando personalizzato, sono stato in grado di gestire tutti i tipi di funzioni in un modo molto semplice.
// HTML
<div class='menulink logout' data-mc='logout'> Logout </div>
<a class='menulink' data-mc='ajax' data-target='main-content-div' href='page/'>Start page 1</a>
<a class='menulink' data-mc='ajax' data-target='main-content-div' href='page/'>Start page 2</a>
// JS
document_onclick: function (e) {
e = getEvObj(e); // custom method to get event object
var evSrcTag = getSrcObj(e); // custom method to get source element
//mouseclick
if (evSrcTag.getAttribute('data-mc') != undefined) {
switch (evSrcTag.getAttribute('data-mc')) {
case 'logout':
if (!confirm(myconfig.msg['asklogout'])) {
return cancelEv(e); // custom method to cancel the event
}
break;
case 'ajax':
//process ajax request as javascript is available, cancel default event (href)
//case ......
}
}
},
Oggi vedo molte soluzioni in cui l'evento è associato / collegato direttamente a un elemento specifico.
Sembra che diventi una lunga lista di gestori da aggiungere, insieme a singole funzioni e nomi di classe legati / aggiunti.
// HTML
<a id="anchor1" href="#">create link dynamically</a>
<a id="anchor2" href="#">create link dynamically</a>
<a id="anchor3" href="#">create link dynamically</a>
// JS
$(function(){
$("#anchor1").click( function() {
$("#anchor1").append('<a class="myclass" href="page/test1">test1</a>');
});
$("#anchor2").click( function() {
$("#anchor2").append('<a class="myclass" href="page/test2">test2</a>');
});
$("#anchor3").click( function() {
$("#anchor3").append('<a class="myclass" href="page/test3">test3</a>');
});
});
Riferirsi al modo in cui impostare i gestori, è un approccio migliore dell'altro, e se sì, quale è e perché?