Как выставить и вызвать открытые методы плагина jQuery - PullRequest
1 голос
/ 17 октября 2011

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

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 Ответ

1 голос
/ 17 октября 2011

Элемент, на который ссылается метод stop(), является элементом, с которым было связано поведение; в этом случае $("#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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...