あなたのコードは、私はあなたが必要とは思わないことeach()
ループでパフォーマンスヒットのビットを取っています。ループ内でイベントをバインドしていて、bind()
スコープ内でアクションを宣言することで、可能性を制限しています。単一の要素だけでなく、どのオブジェクトでもイベントを呼び出せるようにしたいとします。あなたの場合は$('.cn_item')
です。
アイデアは、現在のスライドをクラスで追跡することです。たとえば、.cur
としましょう。
次に、すべてのメソッドを宣言するオブジェクトを作成します。主な方法やアクションはgetCur()
とgoTo()
であり、他のほとんどすべてがこれらを使用します。すなわち、 next()
はgoTo()
var actions = {
getCur: function(){ return idx; },
goTo: function(idx){
// The simplest case
$slides.hide().eq(idx).show();
},
next: function(){ this.goTo(this.getCur()+1); },
prev: function(){ this.goTo(this.getCur()-1); }
.
.
.
}
のためだけのショートカット今、あなたは、単にこれを行うことにより、イベントのアクションを呼び出すことができます:
$slides.click(function(){ actions.goTo($(this).index()); });
$next.click(function(){ actions.next(); });
そして、あなたはsetInterval()
タイマーを追加することができます。
setInterval(actions.next, 1000);
tutorialが役立ちます。私は基本的にスライダーの作成に関わるすべてをカバーしています。私は今日のようにいくつかのことを変え、毎日コードを書く新しい方法を学びます。
ご返信いただきありがとうございます。もう少し詳しく説明してください(特に、各ループを交換する方法と動作を設定する方法についての部分)、私は初心者です。 – INT
編集を参照してください...私はその 'each()'ループで少し精緻化しました – elclanrs