私はあなたのMVとCを別々に保つことが最善であるという点でピーターベイリーの答えを2番目にしなければなりません。GUIウィジェットの最適なスタイルは、ウィジェットを初期化する関数(HTMLの作成、スタイルの追加、またはアニメーションイベントの添付)を作成し、ウィジェットが使用されるさまざまな場所にカスタムイベントハンドラーを添付することでした。
カスタムイベントは、再利用可能なウィジェットの鍵です。これにより、GUIウィジェットでのDOMの変更に対するコードの脆弱性が減り、コードが読みやすくなります。
たとえば、次のようなHTML構造を動的に作成するカスタムボタンがあるとします。
<div class="MyButton"><div class="button-helpful-wrapper"><img src="/blah.png"/></div></div>
初期化コードがクリックイベントを使用してフェードなどを追加するとします。それは問題ではありません。
興味深いのは、このボタンを使用する場合です。'click'イベントをどのdivにアタッチしますか?GUIウィジェットの構造を知る必要はなく、ウィジェットの新しいタイプのイベントを作成する方がよいでしょう。そのようです:
$('#MyButton_Instance1').bind('myclick', function () {...} );
また、ウィジェットの構造については完全に不可知論者です。
これを機能させるには、実際のイベントをカスタムイベントにプロキシするバインド/トリガーを追加するだけです。これを配置するのに最適な場所は、ウィジェット初期化コードです。
$('.MyButton').myButton();
どこ
myButton = function () {
$(this).find('.button-helpful-wrapper').bind('click', function (event) {
$(this).trigger('myclick', event);
});
}
これにより、特定のDOM要素イベントではなく、一般的なウィジェットイベントにアタッチするため、ウィジェットが非常に再利用可能になります。それを試してみてください。