Javascript 将自动播放功能添加到简单jQuery滑块

Javascript 将自动播放功能添加到简单jQuery滑块,javascript,jquery,css,sliders,Javascript,Jquery,Css,Sliders,我当前的滑块功能完美,并且有一个工作分页(分页点、活动状态和控件),但我只想在不破坏任何内容的情况下添加一个新功能: 我的滑块在页面加载时自动播放的功能。 任何建议,非常感谢 HTML/Markup: <div class="allslideshow"> <div class="slideshow-wrapper"> <div class="slide" id="s1"></div> <div clas

我当前的滑块功能完美,并且有一个工作分页(分页点、活动状态和控件),但我只想在不破坏任何内容的情况下添加一个新功能:

我的滑块在页面加载时自动播放的功能。

任何建议,非常感谢

HTML/Markup:

<div class="allslideshow">
    <div class="slideshow-wrapper">
        <div class="slide" id="s1"></div>
        <div class="slide" id="s2"></div>
        <div class="slide" id="s3"></div>
    </div>
    <div class="slideshow-nav"> <a href="#s1">•</a>
 <a href="#s2">•</a>
 <a href="#s3">•</a>
    </div>
</div>
// autoplay: function () {
//      .ready(function) { 
//         e.preventDefault();
//         var $a = $(this);
//         var slide = $($a.attr('href'));
//         var wrapper = $('.slideshow-wrapper');
//         wrapper.animate({
//             left: -slide.position().left
//         }, 300, 'linear', function () {
//             $('.slideshow-nav-current').text(slide.data('index'));
//             $a.addClass('active').siblings('a').removeClass('active');
//          });

//     });
// },
尝试:

<div class="allslideshow">
    <div class="slideshow-wrapper">
        <div class="slide" id="s1"></div>
        <div class="slide" id="s2"></div>
        <div class="slide" id="s3"></div>
    </div>
    <div class="slideshow-nav"> <a href="#s1">•</a>
 <a href="#s2">•</a>
 <a href="#s3">•</a>
    </div>
</div>
// autoplay: function () {
//      .ready(function) { 
//         e.preventDefault();
//         var $a = $(this);
//         var slide = $($a.attr('href'));
//         var wrapper = $('.slideshow-wrapper');
//         wrapper.animate({
//             left: -slide.position().left
//         }, 300, 'linear', function () {
//             $('.slideshow-nav-current').text(slide.data('index'));
//             $a.addClass('active').siblings('a').removeClass('active');
//          });

//     });
// },

您必须添加一个超时,该超时将自动调用更改图像的函数,以便

              setInterval(function(){
                    //call the function here
                }, 6000);

您必须添加一个超时,该超时将自动调用更改图像的函数,以便

              setInterval(function(){
                    //call the function here
                }, 6000);

您必须添加一个超时,该超时将自动调用更改图像的函数,以便

              setInterval(function(){
                    //call the function here
                }, 6000);

您必须添加一个超时,该超时将自动调用更改图像的函数,以便

              setInterval(function(){
                    //call the function here
                }, 6000);

SetIntervl将导致初始化延迟。只需在窗口加载时调用初始化器函数,如下所示:

window.onload = function(){
 //call the init function here
}

SetIntervl将导致初始化延迟。只需在窗口加载时调用初始化器函数,如下所示:

window.onload = function(){
 //call the init function here
}

SetIntervl将导致初始化延迟。只需在窗口加载时调用初始化器函数,如下所示:

window.onload = function(){
 //call the init function here
}

SetIntervl将导致初始化延迟。只需在窗口加载时调用初始化器函数,如下所示:

window.onload = function(){
 //call the init function here
}

前进的方法是将动画功能从链接上的“单击”事件处理程序中抽象出来。这样,您就可以通过单击和计时器事件调用动画函数。关于这一点,最棘手的是,为了在闭包中使用它,您必须捕获
this
上下文。我的意思是:

//...
moveTo: function($a) {
  var slide = $($a.attr('href'));
  var wrapper = $('.slideshow-wrapper');
  wrapper.animate({
    left: -slide.position().left
  }, 500, 'linear', function () {
    $('.slideshow-nav-current').text(slide.data('index'));
    $a.addClass('active').siblings('a').removeClass('active');
  });
},
navigate: function () {
    var self = this;
    $('a', '.slideshow-nav').click(function (e) {
        e.preventDefault();
        if (self.interval) {
          clearInterval(self.interval);
          self.interval = false;
        }
        var $a = $(this);
        self.moveTo($a);
    });
},
autoPlay: function() {
  var $alist = $('a', '.slideshow-nav');
  var i = 0;
  var self = this;
  this.interval = setInterval(function() {
    var $a = $alist.eq(i++);
    i %= $alist.length;
    self.moveTo($a);
  }, 1000);
},
init: function () {
    this.paginate();
    this.navigate();
    this.autoPlay();
}
//...

.

前进的方法是从链接上的“单击”事件处理程序中抽象出动画功能。这样,您就可以通过单击和计时器事件调用动画函数。关于这一点,最棘手的是,为了在闭包中使用它,您必须捕获
this
上下文。我的意思是:

//...
moveTo: function($a) {
  var slide = $($a.attr('href'));
  var wrapper = $('.slideshow-wrapper');
  wrapper.animate({
    left: -slide.position().left
  }, 500, 'linear', function () {
    $('.slideshow-nav-current').text(slide.data('index'));
    $a.addClass('active').siblings('a').removeClass('active');
  });
},
navigate: function () {
    var self = this;
    $('a', '.slideshow-nav').click(function (e) {
        e.preventDefault();
        if (self.interval) {
          clearInterval(self.interval);
          self.interval = false;
        }
        var $a = $(this);
        self.moveTo($a);
    });
},
autoPlay: function() {
  var $alist = $('a', '.slideshow-nav');
  var i = 0;
  var self = this;
  this.interval = setInterval(function() {
    var $a = $alist.eq(i++);
    i %= $alist.length;
    self.moveTo($a);
  }, 1000);
},
init: function () {
    this.paginate();
    this.navigate();
    this.autoPlay();
}
//...

.

前进的方法是从链接上的“单击”事件处理程序中抽象出动画功能。这样,您就可以通过单击和计时器事件调用动画函数。关于这一点,最棘手的是,为了在闭包中使用它,您必须捕获
this
上下文。我的意思是:

//...
moveTo: function($a) {
  var slide = $($a.attr('href'));
  var wrapper = $('.slideshow-wrapper');
  wrapper.animate({
    left: -slide.position().left
  }, 500, 'linear', function () {
    $('.slideshow-nav-current').text(slide.data('index'));
    $a.addClass('active').siblings('a').removeClass('active');
  });
},
navigate: function () {
    var self = this;
    $('a', '.slideshow-nav').click(function (e) {
        e.preventDefault();
        if (self.interval) {
          clearInterval(self.interval);
          self.interval = false;
        }
        var $a = $(this);
        self.moveTo($a);
    });
},
autoPlay: function() {
  var $alist = $('a', '.slideshow-nav');
  var i = 0;
  var self = this;
  this.interval = setInterval(function() {
    var $a = $alist.eq(i++);
    i %= $alist.length;
    self.moveTo($a);
  }, 1000);
},
init: function () {
    this.paginate();
    this.navigate();
    this.autoPlay();
}
//...

.

前进的方法是从链接上的“单击”事件处理程序中抽象出动画功能。这样,您就可以通过单击和计时器事件调用动画函数。关于这一点,最棘手的是,为了在闭包中使用它,您必须捕获
this
上下文。我的意思是:

//...
moveTo: function($a) {
  var slide = $($a.attr('href'));
  var wrapper = $('.slideshow-wrapper');
  wrapper.animate({
    left: -slide.position().left
  }, 500, 'linear', function () {
    $('.slideshow-nav-current').text(slide.data('index'));
    $a.addClass('active').siblings('a').removeClass('active');
  });
},
navigate: function () {
    var self = this;
    $('a', '.slideshow-nav').click(function (e) {
        e.preventDefault();
        if (self.interval) {
          clearInterval(self.interval);
          self.interval = false;
        }
        var $a = $(this);
        self.moveTo($a);
    });
},
autoPlay: function() {
  var $alist = $('a', '.slideshow-nav');
  var i = 0;
  var self = this;
  this.interval = setInterval(function() {
    var $a = $alist.eq(i++);
    i %= $alist.length;
    self.moveTo($a);
  }, 1000);
},
init: function () {
    this.paginate();
    this.navigate();
    this.autoPlay();
}
//...


.

你能发布HTML吗?我想知道如何匹配你在Plunker中的原始结果。谢谢,Austin!补充!奥斯汀马林斯有什么建议吗?是的,对不起。花的时间比我想象的要长,我会开始写一个答案。它看起来不像什么,因为我决定不猜测你的滑块的CSS。“我只是在看“当前”读数。”奥斯汀·穆林斯很兴奋地看到答案!你能发布HTML吗?我想知道如何匹配你在Plunker中的原始结果。谢谢,Austin!补充!奥斯汀马林斯有什么建议吗?是的,对不起。花的时间比我想象的要长,我会开始写一个答案。它看起来不像什么,因为我决定不猜测你的滑块的CSS。“我只是在看“当前”读数。”奥斯汀·穆林斯很兴奋地看到答案!你能发布HTML吗?我想知道如何匹配你在Plunker中的原始结果。谢谢,Austin!补充!奥斯汀马林斯有什么建议吗?是的,对不起。花的时间比我想象的要长,我会开始写一个答案。它看起来不像什么,因为我决定不猜测你的滑块的CSS。“我只是在看“当前”读数。”奥斯汀·穆林斯很兴奋地看到答案!你能发布HTML吗?我想知道如何匹配你在Plunker中的原始结果。谢谢,Austin!补充!奥斯汀马林斯有什么建议吗?是的,对不起。花的时间比我想象的要长,我会开始写一个答案。它看起来不像什么,因为我决定不猜测你的滑块的CSS。“我只是在看“当前”读数。”奥斯汀·穆林斯很兴奋地看到答案!有道理!所以,在我的例子中,我应该把它从e.prevent开始,所以有一件事要记住,如果你把它从start/end开始,初始化器会在一段时间后被调用,这很糟糕。因此,我建议要么不使用initilizer,要么为loadImage等函数指定名称,这样您就可以在外部调用loadImage()进行initilize,在setInterval内部调用loadImage()进行自动更改,这很有意义!所以,在我的例子中,我应该把它从e.prevent开始,所以有一件事要记住,如果你把它从start/end开始,初始化器会在一段时间后被调用,这很糟糕。因此,我建议要么不使用initilizer,要么为loadImage等函数指定名称,这样您就可以在外部调用loadImage()进行initilize,在setInterval内部调用loadImage()进行自动更改,这很有意义!所以,在我的例子中,我应该把它从e.prevent开始,所以有一件事要记住,如果你把它从start/end开始,初始化器会在一段时间后被调用,这很糟糕。因此,我建议要么不使用initilizer,要么为loadImage等函数指定名称,这样您就可以在外部调用loadImage()进行initilize,在setInterval内部调用loadImage()进行自动更改,这很有意义!所以,在我的例子中,我应该把它从e.prevent开始,所以有一件事要记住,如果你把它从start/end开始,初始化器会在一段时间后被调用,这很糟糕。所以我的建议是