Как открыть и вызвать общедоступные методы плагина jQuery

#jquery #jquery-plugins

#jquery #jquery-плагины

Вопрос:

Меня попросили попытаться остановить это слайд-шоу при достижении последнего слайда

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.

В обычном JS я бы сделал что-то вроде

 var txt = "";
for (var o in object) {
  txt  = 'n' o ':' object[o]
}
...
  

но в этом случае я не уверен, как получить доступ к объекту слайд-шоу и выяснить, на чем вызывать stop.

Ответ №1:

«Элемент», на который ссылается stop() метод, является элементом, к которому было привязано поведение; в данном случае $("#slides") . По-видимому, скрипт сохраняет повторяющийся интервал, используя data() метод jQuery. Вот некоторый рабочий код, который извлекает этот интервал, используя тот же 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 /

Комментарии:

1. Отлично. Хорошо замечено в отношении данных.

2. Я добавил $(«.pagination»).remove(); $(«.prev»).remove(); $(«.next»).remove(); чтобы удалить стрелки и нумерацию страниц тоже