Ваш код получает небольшой удар по производительности с этим циклом 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);
Этот учебник может помочь. Я в основном освещаю все, что связано с созданием слайдера. Я бы кое-что изменил с сегодняшнего дня, мы каждый день узнаем новые способы кодирования.