La separación de las preocupaciones es clave aquí, por lo que el enlace de eventos es el método generalmente aceptado. Esto es básicamente lo que han dicho muchas de las respuestas existentes.
Sin embargo , no descarte la idea del marcado declarativo demasiado rápido. Tiene su lugar, y con marcos como Angularjs, es la pieza central.
Debe entenderse que el conjunto <div id="myDiv" onClick="divFunction()">Some Content</div>
se avergonzó tanto porque algunos desarrolladores lo maltrataron. Entonces llegó al punto de proporciones sacrílegas, muy parecido tables
. Algunos desarrolladores realmente evitan tables
los datos tabulares. Es el ejemplo perfecto de personas que actúan sin comprender.
Aunque me gusta la idea de mantener mi comportamiento separado de mis puntos de vista. No veo ningún problema con el marcado que declara lo que hace (no cómo lo hace, ese es el comportamiento). Puede tener la forma de un atributo onClick real, o un atributo personalizado, al igual que los componentes de bootstraps javascript.
De esta manera, al mirar solo el marcado, puede ver lo que hace, en lugar de intentar revertir las carpetas de eventos de JavaScript de búsqueda.
Entonces, como una tercera alternativa a lo anterior, usar atributos de datos para anunciar declarativamente el comportamiento dentro del marcado. El comportamiento se mantiene fuera de la vista, pero de un vistazo puedes ver lo que está sucediendo.
Ejemplo de Bootstrap:
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Fuente: http://getbootstrap.com/javascript/#popovers
Nota La principal desventaja con el segundo ejemplo es la contaminación del espacio de nombres global. Esto puede evitarse utilizando la tercera alternativa anterior o marcos como Angular y sus atributos ng-click con alcance automático.