ここでは関心の分離が重要であるため、イベント バインディングが一般的に受け入れられている方法です。これは基本的に、既存の回答の多くが言っていることです。
ただし、宣言型マークアップのアイデアをすぐに捨てないでください。Angularjs のようなフレームワークでは、中心的な役割を果たします。
<div id="myDiv" onClick="divFunction()">Some Content</div>
一部の開発者によって悪用されたため、全体が非常に恥ずべきことであることを理解する必要があります。それで、それは犠牲的なプロポーションのポイントに達しましたtables
. 一部の開発者は、実際にtables
は表形式のデータを避けています。これは、理解せずに行動する人々の完璧な例です。
私は自分の行動を自分の見解から切り離しておくという考えが好きですが. マークアップが何をするかを宣言することに問題はありません(どのように行うかではなく、それが動作です)。これは、実際の onClick 属性またはカスタム属性の形式である可能性があり、ブートストラップ JavaScript コンポーネントによく似ています。
このように、マークアップをちらりと見るだけで、javascript イベント バインダーを逆ルックアップしようとする代わりに、何が行われているかを確認できます。
したがって、上記の 3 番目の代替手段として、データ属性を使用して、マークアップ内で動作を宣言的にアナウンスします。行動は見えないようにされていますが、一目で何が起こっているかがわかります。
ブートストラップの例:
<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>
ソース: http://getbootstrap.com/javascript/#popovers
注2 番目の例の主な欠点は、グローバル名前空間の汚染です。これは、上記の 3 番目の代替方法、または Angular のようなフレームワークと、自動スコープを持つ ng-click 属性を使用することで回避できます。