コードを減らすためにできることが3つあります。
- ホバーショートカットを使用する
- 匿名関数を使用する
- パラメータ化された関数を使用する
まず、jQueryには、hover
マウスオーバー/マウスアウトの動作を置き換えるメソッドがあります。
$('#scrollbtnR8').bind('mouseover', R8);
$('#scrollbtnR8').bind('mouseout', R8b);
として置き換えることができます
$('#scrollbtnR8').hover(R8, R8b);
それは少し少ないコードですが:)
次に、各イベントハンドラーの関数を定義していますが、これらの関数を使用しているのは1回だけです。それらを1回だけ使用する場合は、次のような匿名関数を作成できます。
$('#scrollbtnR1').bind('click', esta1);
になります
$('#scrollbtnR1').click(function() {
$("#scrollcontrol").animate({"left":-240},500, "swing", null);
});
最後に、関数を使用して、コードの共通部分をカプセル化し、変更部分をパラメーターとして渡すことができます。
次のように実装できます。
<div id="scrollcontrol" animate="swing" swingLeft="-240">
$('div[animate='swing']').click(function() {
$(this).animate({"left": $(this).attr("swingLeft")}, 500, "swing", null);
});
「div」セレクターは、AttributeEqualsSelectorを使用します。また、すべての「アニメーション」divにクラスを割り当て、クラスセレクターを使用してそれらを選択することもできます。$("div.animate")
これにより、すべてが選択されます<div class="animate">
。
ここで何が起こるかです:
- animate属性の値が「swing」であるすべてのdivを選択します。
- jQueryのswinganimateを呼び出します
$(this).attr("swingLeft")
が、左側のプロパティとして使用します。
attr("wingLeft")
HTMLマークアップで定義されているswingLeftプロパティの値を取得します。
この時点でコードを見るのをやめました。重要なのは次のとおりです。実行するコードを見て、一般化できるパターンに気付くかどうかを確認します。その後、コードをさらに単純化することができます。
また、注目に値するのは、「animate」、「swingLeft」などのプロパティをHTMLに追加することを好まない人もいます。更新pimvdbのコメントによると、jQueryデータを使用して少し「クリーン」にすることができます。
その場合、コードは次のようになります。
<div id="scrollcontrol" class="swing" data-swingLeft="-240">
$('.swing').click(function() {
$(this).animate({"left": $(this).data("swingLeft")}, 500, "swing", null);
});