Pemisahan masalah adalah kunci di sini, sehingga pengikatan acara adalah metode yang diterima secara umum. Ini pada dasarnya adalah apa yang dikatakan oleh banyak jawaban yang ada.
Namun jangan membuang ide markup deklaratif terlalu cepat. Memiliki tempat itu, dan dengan kerangka kerja seperti Angular, adalah pusatnya.
Perlu ada pemahaman bahwa keseluruhannya <div id="myDiv" onClick="divFunction()">Some Content</div>
sangat dipermalukan karena disalahgunakan oleh beberapa pengembang. Jadi itu mencapai titik proporsi asusila, seperti tables
. Beberapa pengembang sebenarnya menghindari tables
data tabular. Ini adalah contoh sempurna dari orang yang bertindak tanpa pengertian.
Meskipun saya suka ide menjaga perilaku saya terpisah dari pandangan saya. Saya tidak melihat ada masalah dengan markup yang menyatakan apa yang dilakukannya (bukan bagaimana melakukannya, itu adalah perilaku). Ini mungkin dalam bentuk atribut onClick aktual, atau atribut khusus, seperti komponen javascript bootstraps.
Dengan cara ini, dengan melihat sekilas pada markup, Anda dapat melihat apa yang dilakukan, alih-alih mencoba membalikkan pengikat acara javascript.
Jadi, sebagai alternatif ketiga di atas, menggunakan atribut data untuk secara deklaratif mengumumkan perilaku di dalam markup. Perilaku dihindarkan dari pandangan, tetapi sekilas Anda dapat melihat apa yang terjadi.
Contoh 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>
Sumber: http://getbootstrap.com/javascript/#popovers
Catatan Kerugian utama dengan contoh kedua adalah polusi namespace global. Ini dapat dielakkan dengan menggunakan alternatif ketiga di atas, atau kerangka kerja seperti Angular dan atribut ng-klik mereka dengan cakupan otomatis.