如何将"Flexslider"当前图像编号转换为可在函数中使用的变量?

byr*_*gur 11 javascript jquery flexslider

我正在使用flexslider.在此页面的高级点击下有一个示例(在"新的,强大的回调API"部分中,它们用于slider.currentSlide获取当前幻灯片的编号.

如何在完全不同的功能中访问此值?我正在考虑一个全局变量,但我不知道这是否有效,我不知道是否可以将函数中的变量声明为全局变量.

Lew*_*wis 36

您可以通过以下方式访问flexslider对象来避免全局变量:

$(element).data('flexslider')
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下你会使用:

$(element).data('flexslider').currentSlide
Run Code Online (Sandbox Code Playgroud)


rik*_*iku 17

您可以声明一个全局变量并在after回调函数中设置该值.这里有一些伪代码可以帮助你理解:

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

function useCurSlideHere() {
  alert(window.curSlide);
}
Run Code Online (Sandbox Code Playgroud)

虽然理想情况下你可以避免使用全局变量,但是可以将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);
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:编辑使用slider.currentSlide的答案.

  • 很好的答案,但实际上有一个更清洁,更简单的方法,请参阅下面的答案. (2认同)