このような jQuery コードをたくさん見てきましたが、言うまでもなく、好きではありません。
<div id="myDiv">
<a class="clickable" href="#">Click Me</a>
<a class="clickable" href="#">Click Me</a>
<a class="clickable" href="#">Click Me</a>
<a class="clickable" href="#">Click Me</a>
</div>
<script>
$(document).ready(function(){
$('clickable').click(function(){
// Do some stuff...
});
});
</script>
上記のイベントのバインドと処理では、ページ上で html 構造を使用できるようにする必要があるため、人々がこれを行っていることは理解していますが、Web サイトのビュー全体でプレゼンテーション、ロジック、および構成が混在することになります。また、そこにあるほぼすべてのデバッガーでロジックをデバッグするのが非常に難しくなります。
だから、私は別の .js ファイル(ここでフィドル)で、このようなコーディングを開始しました:
// BEGIN: Event Handlers
var onLoad = function(){
$('.clickable').data('clicked', false);
};
var onMyDivClick = function(){
var clicked = $(this).data('clicked');
if (clicked) {
$(this).trigger('myCustomEvent');
} else {
alert('you clicked me');
$(this).data('clicked', true);
}
};
var onMyCustomEvent = function(){
$(this).css('color', 'dimGray');
alert('please don\'t click me again');
};
// END: Event Handlers
// BEGIN: Event Binding
$(window).on('load', onLoad);
$(document).on('click', '.clickable', onMyDivClick);
$(document).on('myCustomEvent', '.clickable', onMyCustomEvent);
// END: Event Binding
これで、ページ上の構造を気にする必要がなくなりました。すべてをラップする必要はあり$(document).ready(function(){});
ません。また、構造体が ajax でロードされるかどうかを気にする必要もありません。
質問 1 このアプローチにマイナス面はありますか? これまでのところ、私は何も見つけていません。しかし、私たちのサイトのコードの大部分をリファクタリングする前に、考えられる注意事項について聞きたいと思います.
質問 2 最新の jQuery 機能を使用して、このアプローチをさらに進めるにはどうすればよいですか?