Как получить текущий номер изображения Flexslider в переменной, которую я могу использовать в функции?

Я использую flexslider. Пример под расширенным нажатием на странице this (в разделе "Новый, надежный API обратного вызова" , где они используют slider.currentSlide для получения номера текущего слайда.

Как я могу получить доступ к этому значению в совершенно другой функции? Я думаю о глобальной переменной, но я не знаю, будет ли это работать, и я не знаю, можно ли объявить переменную внутри функции глобальной.

Ответ 1

Вы можете объявить глобальную переменную и установить значение в функции после обратного вызова. Вот несколько псевдокодов, которые помогут вам понять:

var curSlide;
$(window).load(function() {
  $('.flexslider').flexslider({
    after: function(slider) {
      window.curSlide = slider.currentSlide;
    }
  });
});

function useCurSlideHere() {
  alert(window.curSlide);
}

Хотя в идеале вы бы не использовали глобальную переменную, и вы могли бы использовать функцию useCurSlideHere в классе, который вы создаете экземпляр на window.load, и использовать его при передаче переменной curSlide в функции после обратного вызова.

$(window).load(function() {
  var customSlider = new useCurSlideHere();
  $('.flexslider').flexslider({
    after: function(slider) {
      customSlider.setCurSlide(slider.currentSlide);
    }
  });      
});

function useCurSlideHere() {
  this.curSlide = 0;

  this.setCurSlide = function(curSlide) {
    this.curSlide = curSlide;
  }

  this.getCurSlide= function() {
    alert(this.curSlide);
  }
}

EDIT: отредактирован ответ на использование slider.currentSlide.

Ответ 2

Вы можете избежать глобальных переменных, обратившись к объекту flexslider с помощью:

$(element).data('flexslider')

Итак, в вашем случае вы будете использовать:

$(element).data('flexslider').currentSlide