2

我一直忙于创建一个 Jquery Slider 并遇到了一个不寻常的问题。我有两个主要的滑动功能,称为 slideFromLeft 和 slideFromRight。两者都采用整数作为参数来指示它必须从右侧或左侧“滑动”到哪个幻灯片编号。这一切都完美无缺。

现在,问题出在哪里:我一直在尝试添加 next() 和 previous() 函数,这两个函数都分别使用了 slideFromLeft 和 slideFromRight 函数,即。像这样:

self.slideFromLeft(Math.max(0, self.current - 1));

在调用其中任何一个函数后,第一次可以工作,但他们都不想第二次工作,而 slideFromLeft 和 slideFromRight 函数仍然正常工作。

我在第二次调用 next() 或 prev() 函数时遇到的控制台错误如下:

未捕获的类型错误:对象 [object Object] 的属性“下一个”不是函数

我创建了一个 JSFiddle,因此您可以自己测试并查看结果:http: //jsfiddle.net/HCzbW/1/

4

1 回答 1

0

您使用self.nextandself.prev作为函数和变量来存储 int。

self.prev = 0;
...
self.next = 0;
...

self.next = function () {
    self.slideFromRight(
        Math.min(self.last, self.current + 1)
    );
}

self.prev = function () {
    self.slideFromLeft(
        Math.max(0, self.current - 1)
    );
}

问题出现在这些行中

self.slideFromLeft = function (num) {
  ...
  self.prev = self.current;
  self.next = num;
  ...
}

self.slideFromRight = function (num) {
  ...
  self.prev = self.current;
  self.next = num;
  ...
}

如果您将函数分别重命名为nextSlideprevSlide,您的 Slider 将再次工作。

self.nextSlide = function () {
    self.slideFromRight(
        Math.min(self.last, self.current + 1)
    );
}

self.prevSlide = function () {
    self.slideFromLeft(
        Math.max(0, self.current - 1)
    );
}

和你的 html 到

<a href="#" onclick="list.prevSlide()">Prev</a>
<a href="#" onclick="list.nextSlide()">Next</a>

您可以在 jsfiddle http://jsfiddle.net/HCzbW/2/中看到它

于 2013-06-10T19:53:18.270 回答