2013-02-02 269 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();