如何公开和调用jQuery插件的公共方法

时间:2011-10-17 11:54:04

标签: jquery jquery-plugins

我被要求尝试在到达最后一张幻灯片时停止此幻灯片放映

http://jsfiddle.net/mplungjan/Fakwx/

以下是我需要修改的代码 - 额​​外的奖励是从对象中获取幻灯片的数量

$(function(){
  $('#slides').slides({
    animationComplete: function(current) {
      // how to stop on the last slide:
      // a) get the number of slides from the object - called total in the js
      // b) call the stop() or pause() on the slideshow object
      if (current>=????.total) {
         ????.stop();
      }
    },            
    preload: true,
  .
  .
  });
});

以下是网站http://slidesjs.com/ - 我没有找到任何可以使用的示例,但精通jQuery的人应该能够告诉我如何从http://slidesjs.com/js/slides.jquery.js调用此函数:

function stop() {  // clear interval from stored id
  clearInterval(elem.data('interval'));
}

请告诉我你是如何找到这个对象的,因为我从未尝试过枚举jQuery方法。

在Plain JS中我会做类似

的事情
var txt = "";
for (var o in object) {
  txt += '\n'+o+':'+object[o]
}
...

但在这种情况下,我不知道如何访问幻灯片对象并找出停止播放的内容。

1 个答案:

答案 0 :(得分:1)

stop()方法中引用的“elem”是行为绑定的元素;在这种情况下,$("#slides")。显然,脚本使用jQuery的data()方法存储重复间隔。下面是一些使用相同data()方法检索该间隔的工作代码,并使用图像数量(减去两个按钮)来确定何时停止。

注意:每次计算图像数量效率低下。总计数应存储在变量中,但为了清楚起见,我将其留在if()语句中。

$(function(){
  $('#slides').slides({
     animationComplete: function(current) {
       // how to stop on the last slide
       // a) get the number of slides from the object
       // b) call the stop() or pause() on the slideshow object
       if (current >= $("#slides img").length - 2) // Subtract Two arrows
          clearInterval($('#slides').data('interval'));
       },            
       preload: true,
       preloadImage: 'http://slidesjs.com/img/loading.gif',
       play: 5000,
       pause: 2500,
       slideSpeed: 600,
       hoverPause: true
   });
});

更新了JSFiddle:http://jsfiddle.net/Fakwx/2/