2013-02-02 231 views
0

如何将函数传递给另一个函数并在特定时刻在另一个脚本中调用它? 比如我愿做这样的事情:将函数作为参数传递

var interval; 
var parallaxElements = function(elementSet,operacija){ 
    clearInterval(interval); 
    var parallax = []; 
    if(elementSet!=null){ 
     elementSet.find(".parallax").each(function(index) { 
      parallax.push($(this)); 
     }); 
    } 
    parallaxTiming = 30; 
    parallax = _.shuffle(parallax); 

    interval = setInterval(function(){ 
     var elem = parallax.shift();   
     if(typeof(elem)!="undefined"){ 
      elem.stop().transition({ 
       y: "0px", 
       z: "0px", 
       duration:"850ms" 
      }) 
     }else{ 
      clearInterval(interval); 

这是我期望传递函数的调用

  return operacija; 
      };   
     }, parallaxTiming); 
    } 

然后调用这样的功能:

parallaxElements(container,function(){ alert(123); }); 

任何帮助将会更有用。预先感谢所有答案。

+2

你只需要调用它'operacija()',我这里不明白的问题... – elclanrs

+0

谢谢你的答案,exactely我在找什么! – hjuster

回答

4

就叫operacija()

小演示代码:

var foo = function(operacija) { 

    interval = setInterval(function(){ 
    clearInterval(interval); 
    return operacija(); 
    }, 1000); 
}; 

foo(function() { alert("123"); }); 
0

在我看来你只是返回函数作为一个函数,但不是它的执行结果。

试试这个:

return operacija.call(); 
+0

[Function.prototype.call()](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/call)要求您传递上下文对象作为第一个参数(例如' operacija.call(this)'),你忽略了这一点;调用一个函数而不需要指定上下文不需要'.call()'调用,而是一个简单的'operacija()'调用,就像@elclanrs和@CyrilleKarmann指出的那样。 – lanzz

+0

尽管像这样使用'call'是不寻常的,但它并不完全错误,并且确实有效。 – bfavaretto

2

变化return operacija;return operacija();