-1

我正在尝试让 jcarousel 双方都工作

如果我使用以下内容,它会返回正确的警报

this.timer = window.setTimeout( (a === 0.5)? alert("c.next() a = " + a): 
                                (a === 0.6)? alert("c.prev() a = " + a): 
                              function(){},500 ) ;

但是,如果我用实际调用替换警报,它不会滚动。只是移动到下一张图片

this.timer = window.setTimeout( (a === 0.5)? c.next.bind(c):
                                (a === 0.6)? c.prev.bind(c): function(){},500 ) ;

没有 bind() 它也不起作用

this.timer = window.setTimeout( (a === 0.5)? c.next(): 
                                (a === 0.6)? c.prev(): function(){},500 ) ;

有谁知道为什么会这样?如果我在 Timeout 中不使用任何条件并使用两个调用之一,例如 c.next() 那么它会滚动但只能从右到左

任何指南将不胜感激桑德拉

4

1 回答 1

2

让您自己更轻松并提前定义您的功能,并以一种为您节省范围和关闭麻烦的方式

var next = function () {return c.next();},
    prev = function () {return c.prev();},
    noop = function () {};

this.timer = window.setTimeout(
    (a === 0.5 ? next : a === 0.6 ? prev : noop),
    500
);

现在

  1. 如果要调试某个函数,可以单独调试到setTimeout中。
  2. 很清楚哪个函数被传递到setTimeout

编辑还要注意我没有调用函数,因为它们是作为参数传递的;当一个人使用setTimeout是因为他们想要稍后调用的东西,而不是立即调用。

于 2013-08-10T14:43:50.220 回答